bash:未找到命令问题(sshpass)

bash:未找到命令问题(sshpass),bash,shell,sshpass,Bash,Shell,Sshpass,我有机器A和机器B。从我的本地机器X,我想运行一个bash脚本,它将连接到机器a,然后连接到机器B,以检查机器B上的包版本 现在,我在机器B上安装了两个或更多的软件包 单包版本检查: sshpass -p 'Password' ssh admin@A.A.A.A -p 30025 "sshpass -p 'Password' ssh B.B.B.B "dpkg -s env.ns | grep -E 'Version|Package' | tr '\n' ',' |sed 's/,$/\n/'

我有
机器A
机器B
。从我的
本地机器X
,我想运行一个bash脚本,它将连接到
机器a
,然后连接到
机器B
,以检查
机器B
上的包版本

现在,我在
机器B
上安装了两个或更多的软件包

单包版本检查:

sshpass -p 'Password' ssh admin@A.A.A.A -p 30025  "sshpass -p 'Password' ssh B.B.B.B "dpkg -s env.ns | grep -E 'Version|Package' | tr '\n' ',' |sed 's/,$/\n/'""
结果:

Package: env.ns,Version: 51.0.0n
Package: env.ns,Version: 51.0.0n
-bash: dpkg: command not found
Package: env.ns,Version: 51.0.0
Package: agent.ns,Version: 51.0.0
多包检查:

sshpass -p 'Password' ssh admin@A.A.A.A -p 30025  "sshpass -p 'Password' ssh B.B.B.B "dpkg -s env.ns | grep -E 'Version|Package' | tr '\n' ',' |sed 's/,$/\n/' && dpkg -s agent.ns | grep -E 'Version|Package' | tr '\n' ',' |sed 's/,$/\n/'""
结果:

Package: env.ns,Version: 51.0.0n
Package: env.ns,Version: 51.0.0n
-bash: dpkg: command not found
Package: env.ns,Version: 51.0.0
Package: agent.ns,Version: 51.0.0
我无法获取第二个的包版本。使用
sshpass
,我们可以传递多个命令在主机上运行吗

预期结果:

Package: env.ns,Version: 51.0.0
Package: agent.ns,Version: 51.0.0

&&后面的所有内容都作为单独的命令执行。 也许您可以尝试大括号扩展:在大括号中添加这两个命令,如
{command1,command2}
(不确定这是否可行)


如果大括号展开不起作用,则必须重复该命令。

尝试使用
;'而不是
&&

sshpass -p 'Password' ssh admin@A.A.A.A -p 30025  "sshpass -p 'Password' ssh B.B.B.B "dpkg -s env.ns | grep -E 'Version|Package' | tr '\n' ',' |sed 's/,$/\n/' ; dpkg -s agent.ns | grep -E 'Version|Package' | tr '\n' ',' |sed 's/,$/\n/'""

设置私钥身份验证,并使用ssh-Jadmin@A.A.A.A:30025 B.B.B.B“dpkg…”
。这两个命令都存在报价嵌套问题。您需要在每个命令中转义内部的双引号对,以使它们具有您想要的含义。我不确定这是否能完全解决你的问题,但这肯定是朝着正确方向迈出的一步。