Jak uruchamiać wiele poleceń na wielu serwerach Linux
Jeśli zarządzasz wieloma serwerami Linux i chcesz uruchamiać wiele poleceń na wszystkich serwerach Linux, ale nie masz pojęcia, jak to zrobić. Nie musisz się martwić, w tym prostym przewodniku po zarządzaniu serwerem pokażemy, jak uruchamiać wiele poleceń jednocześnie na wielu serwerach z systemem Linux.
Aby to osiągnąć, możesz użyć programu pssh (parallel ssh), narzędzia wiersza poleceń umożliwiającego równoległe wykonywanie ssh na wielu hostach. Dzięki niemu możesz wysyłać dane wejściowe do wszystkich procesów ssh ze skryptu powłoki.
Wymagania
- Zainstaluj Pssh, aby uruchamiać polecenia na wielu zdalnych serwerach Linux
- Musisz używać uwierzytelniania SSH bez hasła dla wszystkich serwerów zdalnych.
Utwórz skrypt powłoki
Dlatego musisz zacząć od przygotowania skryptu zawierającego polecenia Linuksa, które chcesz wykonać na różnych serwerach. W tym przykładzie napiszemy skrypt, który będzie zbierał następujące informacje z wielu serwerów:
- Sprawdź czas pracy serwerów
- Sprawdź, kto jest zalogowany i co robi
- Lista 5 najczęściej uruchomionych procesów według zużycia pamięci.
Najpierw utwórz skrypt o nazwie commands.sh w swoim ulubionym edytorze.
vi commands.sh
Następnie dodaj następujące polecenia do skryptu, jak pokazano.
#!/bin/bash
###############################################################################
#Script Name : commands.sh
#Description : execute multiple commands on multiple servers
#Author : Aaron Kili Kisinga
#Email : [email
################################################################################
echo
show system uptime
uptime
echo
show who is logged on and what they are doing
who
echo
show top 5 processe by RAM usage
ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head -n 6
exit 0
Zapisz plik i zamknij go. Następnie uczyń skrypt wykonywalnym, jak pokazano.
chmod +x commands.sh
Utwórz plik hostów PSSH
Następnie dodaj listę serwerów, na których chcesz uruchomić polecenia, w pliku hosts.txt w formacie [user@]host[:port]
lub po prostu podaj adresy IP serwera.
Sugerujemy jednak użycie aliasów ssh, które można określić w pliku .ssh/config, jak wyjaśniono w temacie konfigurowania niestandardowych połączeń ssh w celu uproszczenia zdalnego dostępu.
Ta metoda jest bardziej wydajna i niezawodna, pozwala określić opcje konfiguracyjne (takie jak nazwa hosta, plik identyfikacyjny, port, nazwa użytkownika itp.) dla każdego zdalnego serwera.
Poniżej znajduje się nasz przykładowy plik aliasów hostów ssh, czyli plik konfiguracyjny ssh specyficzny dla użytkownika.
vi ~/.ssh/config
Następnie utwórz plik hosts.txt, w którym możesz po prostu określić aliasy (nazwy zdefiniowane za pomocą słowa kluczowego Host w pliku .ssh/config), jak pokazano.
vi hosts.txt
Dodaj aliasy serwerów.
server1
server2
server3
Uruchamiaj polecenia za pomocą skryptu na wielu serwerach Linux
Teraz uruchom następujące polecenie pssh, określając plik hosts.txt wraz ze skryptem zawierającym wiele poleceń do uruchomienia na wielu zdalnych serwerach.
pssh -h hosts.txt -P -I<./commands.sh
Znaczenie flag użytych w powyższym poleceniu:
-h
– odczytuje plik hosts.-P
– mówi pssh, aby wyświetlał dane wyjściowe po ich otrzymaniu.-I
– odczytuje dane wejściowe i wysyła je do każdego procesu ssh.
Otóż to! W tym artykule pokazaliśmy, jak wykonywać wiele poleceń na wielu serwerach w systemie Linux. Możesz podzielić się swoimi przemyśleniami na ten temat w sekcji komentarzy poniżej.