我的输入文件如下所示
文件名:/ etc / hosts
10.142.75.6 m1
10.142.75.7 m2
10.142.75.8 m3
下面的脚本在/ etc / hosts中查找主机名,并且应该打印命令" nproc"的输出,但它打印输出两次,一次用于ip及其相应的主机名
for hosts in $(cat /etc/hosts) ;
do
ssh $hosts "uname -a"
done
答案 0 :(得分:2)
目前,您正在将文件中的每个单词解析为主机名 - 因此您首先通过其IP连接到每个主机,然后再通过其名称连接到每个主机。
最好使用BashFAQ #1最佳做法来阅读文件:
ip
在这里,我们将第一列放入shell变量name
,将第二列(如果有的话)放入_
,将所有后续列放入变量https://
答案 1 :(得分:0)
您可以使用cut
仅读取文件的第一列:
for hosts in $(cut -d' ' -f1 < /etc/hosts);
do
echo "jps for $hosts"
ssh $hosts "uname -a"
done