Bir dosya var servers.txt
sunucuların listesi ile,:
server1.mydomain.com
server2.mydomain.com
server3.mydomain.com
Dosyayı satır satır okudum while
ve her satırda yankı yazdığımda , tüm beklendiği gibi çalışıyor. Tüm satırlar yazdırılıyor.
$ while read HOST ; do echo $HOST ; done < servers.txt
server1.mydomain.com
server2.mydomain.com
server3.mydomain.com
Ancak, tüm sunuculara ssh yapmak ve bir komutu çalıştırmak istediğimde aniden while
döngüm çalışmamaya başladı:
$ while read HOST ; do ssh $HOST "uname -a" ; done < servers.txt
Linux server1 2.6.30.4-1 #1 SMP Wed Aug 12 19:55:12 EDT 2009 i686 GNU/Linux
Bu, yalnızca listedeki ilk sunucuya bağlanır, hepsine değil. Burada ne olduğunu anlamıyorum. Biri lütfen açıklayabilir mi?
Bu, daha da garip, çünkü for
döngü kullanımı iyi çalışıyor:
$ for HOST in $(cat servers.txt ) ; do ssh $HOST "uname -a" ; done
Linux server1 2.6.30.4-1 #1 SMP Wed Aug 12 19:55:12 EDT 2009 i686 GNU/Linux
Linux server2 2.6.30.4-1 #1 SMP Wed Aug 12 19:55:12 EDT 2009 i686 GNU/Linux
Linux server3 2.6.30.4-1 #1 SMP Wed Aug 12 19:55:12 EDT 2009 i686 GNU/Linux
Belirli bir şey olmalı ssh
, çünkü diğer komutlar iyi çalışıyor, örneğin ping
:
$ while read HOST ; do ping -c 1 $HOST ; done < servers.txt
ansible