我有一个脚本,可以将ssh切换到其他vms并运行命令。
工作代码如下:
declare -a envname=("hostname1" "hostname2")
# Looping through array
for i in "${envname[@]}"
do
# loging on to environments, running a df command
ssh "$i" "df -h"
done
这很好用,但是随着更多的主机名被添加到列表中,代码将变得混乱。因此,我想要一个.txt文件来替换数组。文本文件如下所示:
hostname1
hostname2
hostname3
这是我尝试使用的.txt文件:
sed '/^[ \t\r\n]*$/d' hosts.txt | while read hosts;
do
echo "$hosts"
ssh "$hosts" "df -h"
done
“ echo $ hosts”打印出看起来不错的每个主机名,但是我在下一行代码中收到错误:
"name or service not knownname "hostname""
我认为这是某种空格/行距问题,因为主机名在前面的命令中看起来不错。 sed '/^[ \t\r\n]*$/d
行是我删除空白的尝试,但这不起作用。