我有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
答案 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}
(不确定这是否有效)
如果大括号扩展不起作用,则必须重复该命令。