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

时间:2018-05-08 13:17:44

标签: bash shell sshpass

我有machine Amachine B。从我的local machine X开始,我想运行一个bash脚本,该脚本将连接到Machine A,然后运行到Machine B以检查Machine B上的包版本。

现在,我在Machine 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

多件套餐检查:

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
-bash: dpkg: command not found

我无法获得第二个的包版本。使用sshpass,我们可以传递多个命令在主机上运行吗?

预期结果:

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

2 个答案:

答案 0 :(得分:1)

尝试使用';'代替'&&'

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/'""

答案 1 :(得分:0)

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

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