Istnieje wiele sposobów wykonywania poleceń lub skryptów na wielu zdalnych komputerach z systemem Linux. Jednym prostym i najłatwiejszym sposobem jest użycie pssh (równoległy program ssh)
pssh : to program do równoległego wykonywania ssh na wielu hostach. Udostępnia funkcje, takie jak wysyłanie danych wejściowych do wszystkich procesów, przekazywanie hasła do ssh, zapisywanie danych wyjściowych do plików i przekroczenie limitu czasu.
Przykład i zastosowanie:
połącz się z hostami host1 i host2 i wydrukuj „hello, world” z każdego z nich:
pssh -i -H "host1 host2" echo "hello, world"
Uruchamiaj polecenia za pomocą skryptu na wielu serwerach:
pssh -h hosts.txt -P -I<./commands.sh
Użyj i uruchom polecenie bez sprawdzania lub zapisywania kluczy hosta:
pssh -h hostname_ip.txt -x '-q -o StrictHostKeyChecking=no -o PreferredAuthentications=publickey -o PubkeyAuthentication=yes' -i 'uptime; hostname -f'
Jeśli plik hosts.txt zawiera dużą liczbę wpisów, powiedzmy 100, wówczas opcję równoległości można również ustawić na 100, aby zapewnić równoczesne uruchamianie poleceń:
pssh -i -h hosts.txt -p 100 -t 0 sleep 10000
Opcje :
-I : Odczytuje wejście i wysyła do każdego procesu ssh.
-P: Nakazuje pssh wyświetlić wyjście, gdy nadejdzie.
-h: Czyta plik hosta.
-H: [użytkownik @] host [: port] dla pojedynczego hosta.
-i: Wyświetla standardowe wyjście i błąd standardowy po zakończeniu każdego hosta
-x args: Przekazuje dodatkowe argumenty wiersza poleceń SSH
-o opcja: Można jej użyć do podania opcji w formacie użytym w pliku konfiguracyjnym. (/ etc / ssh / ssh_config ) (~ / .ssh / config)
-p paralelizm: użyj podanej liczby jako maksymalnej liczby jednoczesnych połączeń
-q Tryb cichy: powoduje, że większość komunikatów ostrzegawczych i diagnostycznych jest pomijana.
-t: Przekracza limit czasu połączeń po określonej liczbie sekund. 0 oznacza, że pssh nie przekroczy limitu czasu połączeń
Podczas łączenia się z komputerem zdalnym, jak postępować, gdy pojawi się monit o uwierzytelnienie odcisków palców RSA.
Wyłącz StrictHostKeyChecking, aby obsłużyć monit uwierzytelniania RSA.
-o StrictHostKeyChecking = nie
Źródło : man pssh