linux - Linux Bash Scripting 执行 SSH 远程命令
问题描述
通过 ssh 从 linux shell 脚本远程运行命令,我遇到了一个奇怪的问题,对此没有解决方案!
这些命令是:
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 连接中正确执行。我能做些什么?
解决方案
推荐阅读
- reactjs - 如何检测在 reactjs 中是否支持 avif?
- reactjs - 我们如何从 SAGA 中的生成器函数中导出变量?
- xml - XSL 将科学记数法转换为数字
- mysql - MySQL 表继承
- javascript - 第二次点击按钮后JS修改表格内容
- laravel - 如何使登录 api Laravel 默认会话
- python - 如何在django中更改模型中列的状态
- java - java.sql.SQLSyntaxErrorException-ORA-01722:无效数字 - 准备好的语句
- javascript - 删除页面上每个元素的属性
- dart - 最佳实践 Intl:将所有消息传递函数放在一个文件中,还是在使用它们的地方创建消息传递函数?