Mam około tuzina Linux-ów, które czasami muszę uruchamiać te same polecenia. Czy jest łatwiejszy (lub zautomatyzowany) sposób, aby to zrobić, oprócz zalogowania się na każdym komputerze i uruchomienia polecenia, pojedynczo? To nie są te same polecenia przez cały czas i nie są ustawione wcześniej, więc nie jest to coś idealnego dla narzędzi takich jak cron
.
linux
remote-access
Chris Bunch
źródło
źródło
Odpowiedzi:
Hm, może pconsole to narzędzie, którego chcesz.
źródło
Istnieje również ClusterSSH , który, cóż, robi dokładnie to, co myślisz. Tak, nazywanie opisowe!
źródło
Powinieneś sprawdzić Puppet tutaj jest linux.com artykuł na temat jego konfiguracji i użytkowania
źródło
Nie pomijaj też pssh i dsh ; oba są bardzo podobne do gsh, o których wspomniał @Philip Durbin.
źródło
Możesz spróbować Capistrano . Początkowo jest to narzędzie do wdrażania Rails, ale rozwinęło się, aby robić wiele rzeczy ze zdalnymi maszynami.
Aby uzyskać pełniejsze podejście do administrowania wieloma komputerami, możesz spróbować szefa kuchni .
źródło
Ansible ma możliwość wykonywania poleceń ad hoc, a także można go rozbudowywać w celu pełnego zarządzania konfiguracją. Możliwość dopasowania na podstawie grup jest doskonała.
http://docs.ansible.com/intro_adhoc.html
źródło
ansible
działa dobrze z setkami maszyn naraz lub można ograniczyć go do n komputerów jednocześnieMyślę, że skopiuję i wkleję moją odpowiedź z Stack Overflow , która wydawała się podobać ludziom. . .
Kwestia, jak uruchamiać polecenia na wielu serwerach naraz, pojawiła się na liście dyskusyjnej Perla innego dnia i dam ci tę samą rekomendację, którą tam podałem , a mianowicie użycie gsh: http://outflux.net/unix/ oprogramowanie / gsh
gsh jest podobny do
for box in box1_name box2_name box3_name
już podanego rozwiązania, ale uważam, że gsh jest wygodniejszy. Ustawiasz plik / etc / ghosts zawierający twoje serwery w grupach takich jak web, db, RHEL4, x86_64 lub cokolwiek (duchy człowieka), a następnie używasz tej grupy, gdy wywołujesz gsh.Możesz także łączyć lub dzielić grupy duchów, na przykład używając web + db lub web-RHEL4.
Wspomnę również, że chociaż nigdy nie korzystałem z shmux, jego strona internetowa zawiera listę oprogramowania (w tym gsh), które pozwala na uruchamianie poleceń na wielu serwerach jednocześnie. Capistrano został już wspomniany i (z tego, co rozumiem) może również znajdować się na tej liście.
źródło
Jeśli korzystasz z pulpitu KDE, konsola ma opcję „Wyślij dane wejściowe do wszystkich sesji”. Dotyczy wszystkich sesji otwartych w tym samym oknie konsoli.
źródło
Możesz także spróbować
ssh [user@]hostname [command]
przejrzeć nazwy hostów.źródło
Zobacz także func. Func pozwala używać architektury modułów do kontrolowania różnych aspektów systemu, od obsługi pakietów, uruchamiania poleceń itp. Działa na module klient / serwer przez SSL i ma również dość elastyczny schemat uwierzytelniania.
źródło
Użyłem ClusterSSH i działa. Jednak poza pewną liczbą terminali nie skaluje się dobrze.
Dziwię się, że nikt nie wspomniał o Xargs. Xargs jest idealny do większości rzeczy. Tak naprawdę czułam się z tym tak dobrze, że nigdy więcej nie używam klastrów.
Przykład
(Uruchom ponownie apache na wszystkich hostach internetowych).
źródło
-P30
część oznacza „uruchom 30 z nich równolegle”Jeśli jesteś już użytkownikiem tmux, możesz polubić tmux-cssh (skrót
TMUX-C(luster)-SSH
). Dajesz mu listę nazw serwerów i otwiera nowe okno tmux z sesją SSH otwartą dla każdego serwera we własnym okienku. Wszystkie naciśnięcia klawiszy są kopiowane do każdego okna. W zależności od liczby hostów dane wyjściowe mogą być trudne do odczytania.źródło
Inne narzędzia to:
RunDeck może być również opisany jako lekki ControlTier.
Narzędzia te zapewniają nie tylko powłokę klastra, ale także interfejs WWW i możesz zapisać swoje zadania do wykorzystania w przyszłości.
źródło
Możesz także wypróbować Cluster SSH (cssh). Nie korzystałem z niego, ale na stronie LinuxJournal.com znajduje się artykuł zatytułowany „Wydajnie zarządzaj wieloma serwerami”.
źródło
Używaj anteny , prostej i bardzo mocnej! Ten skrypt zmienił moje życie :) Jeden skrypt rządzi nimi wszystkimi!
http://nic-nac-project.org/~drimiks/gnu/dish.shtml
„Antena” powłoki staranności wykonuje polecenia za pośrednictwem ssh / rsh / telnet / mysql jednocześnie w kilku systemach. Zmiana hasła, aktualizacja konfiguracji, kopiowanie plików, sprawdzanie stanu itp. Na setkach węzłów jest wtedy prosta. Antena jest podobna do „dsh” IBM (powłoki rozproszonej), ale ponadto umożliwia zdalne wykonywanie poleceń wymagających uwierzytelnienia. W porównaniu z innymi pakietami typu open source, które zawierają rozproszoną powłokę (lub podobne narzędzia), takie jak ClusterIt, powłoka tancerza, równoległa rozproszona powłoka lub C3, antena jest cienkim i łatwym w użyciu zdalnym opakowaniem w przypadku, gdy potrzebne jest elastyczne rozwiązanie. Możesz przeglądać stronę podręcznika anteny on-line tutaj.
źródło
Oto kilka przykładów użycia poleceń wymienionych w innych odpowiedziach:
pdsh
Może przyjmować zakresy liczbowe, wyjścia z nazwą hosta jako pierwsze, wydaje się faktycznie utrzymane :
najprostsza wersja:
pdsh -w hostname echo done
wydajność:
Bardziej skomplikowany przykład:
pdsh -w username@hostname[7-8],username@otherhost "sleep 5 && echo done"
wydajność:
prochowiec:
brew install pdsh
dsh
dsh -m user@host,user@host --remoteshell ssh --concurrent-shell -- "sleep 5 && echo done"
potrzebujesz zdalnego ustawienia powłoki, inaczej użyje „rsh”, który może, ale nie musi być dostępny.
prochowiec:
brew install dsh
pssh
pssh -i -H user@host -H user@host "sleep 5 && echo done"
Wszyscy mogą opcjonalnie również pobrać listę komputerów z pliku.
Dodaj tutaj więcej przykładów, jest to wiki społeczności
prochowiec:
brew install pssh
Klaster SSH
Cluster SSH („wersja Mac” najwyraźniej istnieją dwie wersje, druga jest tutaj ) faktycznie otwiera „prawdziwe terminale” z dużym terminalem na dole, który wysyła dane wejściowe do wszystkich pozostałych. To jest jak interfejs użytkownika, który wysyła go do wielu.
Dawny:
csshX hostname0[1-2] hostname3
następnie wpisz w czerwone pole i przejdzie do każdego okna terminala, po jednym dla każdego hosta, które się pojawi.mac:
brew install csshx
(stara wersja, ale nadal działa)istnieje również
brew install ansible
FWIWźródło