我有machine A和machine 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发布于 2018-05-08 14:24:31
尝试使用';'而不是'&&'
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-08 13:28:00
&&后面的所有内容都作为单独的命令执行。也许您可以尝试大括号扩展:将这两个命令添加到类似于这个{command1, command2}的大括号中(不确定这是否有效)
如果大括号扩展不起作用,则必须重复该命令。
https://stackoverflow.com/questions/50234613
复制相似问题