0

我有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
4

2 回答 2

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/'""
于 2018-05-08T14:24:31.737 回答
0

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

如果大括号扩展不起作用,您将不得不重复该命令。

于 2018-05-08T13:28:00.633 回答