Linux Bash脚本执行SSH远程命令

时间:2018-08-07 12:55:40

标签: linux bash ssh

通过从Linux shell脚本通过ssh远程运行命令来解决这个问题,这是一个奇怪的问题!

这些命令是:

rpm -qa | grep bzd* | sort
rpm -qa | grep bzd-eet
rpm -qa | grep bzd-five

如果我在远程计算机上的shell提示符下使用所有这些命令,它们将运行正常。如果将这些命令从文本文件加载到数组中,它将仍然有效:

while read line
do
   commands+=("$line")
done < commands.txt

ssh root@server "${commands[0]}"   
ssh root@server "${commands[1]}"
ssh root@server "${commands[2]}"

echo ${commands[0]} output -->rpm -qa | grep bzd* | sort       
echo ${commands[1]} output -->rpm -qa | grep bzd-eet 
echo ${commands[2]} output -->rpm -qa | grep bzd-five  

-> ssh命令提供正确的软件包,在这种情况下,应在远程计算机上找到这些软件包。

问题:

如果我将这些命令的输出存储在变量中,将无法正常工作!

示例:

results=$(ssh root@server "${commands[0]}")
echo "${results[@]} --> output: nothing

results=$(ssh root@server "${commands[1]}")
echo "${results[@]} --> output: nothing  

results=$(ssh root@server "${commands[2]}")
echo "${results[@]} --> output: nothing                    

但是

results=$(ssh root@server rpm -qa | grep bzd* | sort)
echo "${results[@]} --> output: correct output!!!!!!

这是怎么回事?似乎从任何类型的数组加载的命令在ssh连接中均未正确执行。我该怎么办?

0 个答案:

没有答案