192.168.0.1
192.168.0.2
192.168.0.3
當我透過 while 使用 read 指令將檔案內容一行一行讀入的時後,它的表現會像是這樣
while read line; do echo $line ; done < ip_list.txt
192.168.0.1
192.168.0.2
192.168.0.3
但是當我使用上面的方法,將echo 改成 ssh ,我的 loop 只會執行第一個loop就停了。
while read line ; do ssh $line "hostname" ; done < ip_list.txt
server1.mydomain.com
原因是因為 ssh 會重設標準輸入輸出資訊
解決方法:1
可以用 -n 選項來處理
while read line ; do ssh -n $line "hostname" ; done < ip_list.txt
server1.mydomain.com
server2.mydomain.com
server3.mydomain.com
解決方法:2
改用for
for line in $(cat ip_list.txt ) ; do ssh $list "hostneme" ; done
解決方法:3
給予第二個轉向符
while read line ; do ssh $line "hostname" < /dev/null; done < ip_list.txt