Tôi có một tập tin servers.txt
, với danh sách các máy chủ:
server1.mydomain.com
server2.mydomain.com
server3.mydomain.com
Khi tôi đọc từng dòng tệp while
và lặp lại từng dòng, tất cả đều hoạt động như mong đợi. Tất cả các dòng được in.
$ while read HOST ; do echo $HOST ; done < servers.txt
server1.mydomain.com
server2.mydomain.com
server3.mydomain.com
Tuy nhiên, khi tôi muốn ssh tới tất cả các máy chủ và thực thi một lệnh, đột nhiên while
vòng lặp của tôi ngừng hoạt động:
$ 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
Điều này chỉ kết nối với máy chủ đầu tiên trong danh sách, không kết nối với tất cả chúng. Tôi không hiểu chuyện gì đang xảy ra ở đây. Ai đó có thể vui lòng giải thích?
Điều này thậm chí còn lạ, vì sử dụng for
vòng lặp hoạt động tốt:
$ 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
Nó phải là một cái gì đó cụ thể ssh
, bởi vì các lệnh khác hoạt động tốt, chẳng hạn như ping
:
$ while read HOST ; do ping -c 1 $HOST ; done < servers.txt
ansible