Wyszukiwanie w witrynie

Uruchom pojedyncze polecenie na wielu zdalnych systemach jednocześnie, używając PSSH


Jakiś czas temu opublikowaliśmy przewodnik dotyczący „kopiowania pliku do wielu katalogów w wierszu poleceń w systemie Linux”. W tym artykule nauczyliśmy Cię różnych metod kopiowania pojedynczego pliku do wielu katalogów jednocześnie. Dzisiaj zobaczymy, jak uruchomić jedno polecenie na wielu zdalnych systemach jednocześnie w systemach operacyjnych typu Unix. Jak już wiesz, możemy uzyskać dostęp do zdalnego systemu i komunikować się z nim za pomocą protokołu SSH. openSSH pozwala nam wykonywać wszelkiego rodzaju zadania administracyjne w systemie zdalnym. Jedynym ograniczeniem openSSH jest to, że nie możemy uruchomić jednego polecenia na wielu zdalnych systemach jednocześnie. Bez problemu. Oto, gdzie PSSH wypełnia tę lukę.

Co to jest PSSH?

PSSH lub Parallel SSH to pakiet wiersza poleceń, który pomaga równolegle łączyć się przez ssh na wielu hostach. Pakiet PSSH składa się z następujących poleceń:

  • pssh - SSH do wielu zdalnych systemów równolegle,
  • pscp - Kopiuj pliki równolegle do wielu hostów,
  • prsync: kopiuj pliki równolegle na wiele hostów,
  • pnuke: Zakończ równolegle procesy na wielu hostach,
  • pslurp: kopiuj pliki równolegle z wielu hostów.

W tym samouczku zobaczymy, jak wykonać pojedyncze polecenie na wielu hostach jednocześnie za pomocą PSSH.

Zainstaluj PSSH w systemie Linux

Możemy łatwo zainstalować PSSH za pomocą PIP, menedżera pakietów Pythona.

Aby zainstalować PIP na Arch Linux i jego pochodnych, uruchom:

sudo pacman -S python-pip

W RHEL, Fedorze i CentOS:

sudo yum install epel-release
sudo yum install python-pip

Na najnowszym RHEL i jego klonach (AlmaLinux i Rocky Linux) uruchom:

sudo dnf install epel-release
sudo dnf install python-pip

W Debianie, Ubuntu, Linux Mint i Pop OS:

sudo apt-get install python-pip

Aby uzyskać więcej informacji na temat zarządzania pakietami Pythona za pomocą PIP, zobacz poniższy link.

  • Jak zarządzać pakietami Pythona za pomocą Pip

Po zainstalowaniu PIP uruchom następujące polecenie, aby zainstalować PSSH.

sudo pip install pssh

PSSH został zainstalowany! Przejdźmy dalej i zobaczmy, jak z niego korzystać.

Uruchom pojedyncze polecenie na wielu zdalnych systemach jednocześnie, używając PSSH

Ważne: aby używać PSSH (wyłącznie na potrzeby tego samouczka), wszystkie Twoje systemy zdalne muszą mieć wspólną nazwę użytkownika i to samo hasło. W przeciwnym razie ta metoda nie pomoże. Załóżmy na przykład, że utworzyłem już użytkownika o nazwie sk z hasłem ostechnix na wszystkich moich zdalnych hostach. Powinieneś mieć tego samego użytkownika z tym samym hasłem we wszystkich systemach zdalnych.

Zobaczmy teraz, jak uruchomić pojedyncze polecenie na wielu zdalnych hostach przy użyciu PSSH. Przejdź do systemu lokalnego, w którym chcesz uruchomić polecenie, i utwórz plik tekstowy o nazwie remotehosts.txt. Możesz to nazwać jak chcesz.

vi remotehosts.txt

Dodaj adresy IP zdalnych hostów wraz z numerami portów, jeden po drugim, jak dokładnie pokazano poniżej.

192.168.1.103:22
192.168.1.104:22

Gdzie 192.168.1.103 i 192.168.1.104 to adresy IP moich systemów zdalnych. 22 to numer portu ssh. Musisz podać poprawny numer portu, jeśli już go zmieniłeś. Upewnij się także, że możesz uzyskać dostęp do wszystkich zdalnych hostów z systemu lokalnego za pośrednictwem protokołu ssh.

Teraz sprawdźmy czas działania obu zdalnych hostów z naszego systemu lokalnego. Aby to zrobić, uruchom:

pssh -h remotehosts.txt -l sk -A -i "uptime"

Tutaj,

  • remotehosts.txt — zawiera adresy IP obu systemów zdalnych.
  • sk - nazwa użytkownika obu systemów zdalnych

Wprowadź hasło użytkownika "sk".

Przykładowe dane wyjściowe:

Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: 
[1] 20:51:15 [SUCCESS] 192.168.1.103:22
 20:50:50 up 8 min, 1 user, load average: 0.05, 0.11, 0.10
[2] 20:51:15 [SUCCESS] 192.168.1.104:22
 20:50:52 up 12 min, 1 user, load average: 0.00, 0.07, 0.12

Jak widać powyżej, uruchomiliśmy polecenie „uptime” na dwóch zdalnych hostach i uzyskaliśmy wynik za jednym razem.

A co z wersją jądra? Aby sprawdzić zainstalowaną wersję obu zdalnych hostów, uruchom:

pssh -h remotehosts.txt -l sk -A -i "uname -r"

Przykładowe dane wyjściowe:

Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: 
[1] 20:53:09 [SUCCESS] 192.168.1.103:22
3.10.0-327.22.2.el7.x86_64
[2] 20:53:09 [SUCCESS] 192.168.1.104:22
4.4.0-21-generic

Bardzo fajnie, prawda? Czy możemy utworzyć katalog na obu zdalnych hostach jednocześnie? Oczywiście, że tak! Aby to zrobić, uruchom następujące polecenie:

pssh -h remotehosts.txt -l sk -A -i "mkdir dir1"

Podobnie możesz zrobić wszystko, co chcesz, na wielu zdalnych hostach z systemu lokalnego, używając PSSH.

Ważne: zachowuj szczególną ostrożność podczas korzystania z PSSH. Jedno złe polecenie zostanie wykonane jednocześnie na wielu hostach i uszkodzi wszystkie hosty. Dlatego należy zachować szczególną ostrożność podczas stosowania tej metody w produkcji. Sugeruję przetestowanie tego na maszynach wirtualnych. Gdy już zaznajomisz się z PSSH, możesz go używać w środowisku produkcyjnym, jeśli chcesz.

Sugerowana lektura:

  • DSH - uruchom polecenie systemu Linux na wielu hostach jednocześnie
  • Wykonuj polecenia na zdalnych systemach Linux przez SSH

Mam nadzieję że to pomoże.

Powiązane artykuły