Saya punya file servers.txt
, dengan daftar server:
server1.mydomain.com
server2.mydomain.com
server3.mydomain.com
ketika saya membaca file baris demi baris dengan while
dan menggema setiap baris, semua berfungsi seperti yang diharapkan. Semua garis dicetak.
$ while read HOST ; do echo $HOST ; done < servers.txt
server1.mydomain.com
server2.mydomain.com
server3.mydomain.com
Namun, ketika saya ingin ssh ke semua server dan menjalankan perintah, tiba-tiba while
loop saya berhenti berfungsi:
$ 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
Ini hanya terhubung ke server pertama dalam daftar, bukan ke semuanya. Saya tidak mengerti apa yang terjadi di sini. Bisakah seseorang tolong jelaskan?
Ini bahkan lebih aneh, karena menggunakan for
loop berfungsi dengan baik:
$ 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
Itu harus sesuatu yang spesifik ssh
, karena perintah lain berfungsi dengan baik, seperti ping
:
$ while read HOST ; do ping -c 1 $HOST ; done < servers.txt
ansible