Mam listę serwerów:
cat list.txt
10.10.10.10 servera
10.11.10.10 serverb
Jak mogę sprawdzić, czy mogę się do nich zalogować przez ssh, czy nie? Mam na myśli, że powinienem być w stanie zalogować się za pomocą klucza ssh auth .., więc w skrócie, potrzebuję rozwiązania, które sortuje linie (serwery) na list.txt w następujący sposób:
- serwery, które mogę zalogować za pomocą klucza ssh
- serwery pytające o hasło (oczywiście hasło jest nieznane ..)
- serwery, które są nieosiągalne
ping
nie jest tak naprawdę dobrym wskaźnikiem. Istnieje wiele ustawień, które umożliwiająssh
połączenia, ale nie odpowiadają na pingi.Odpowiedzi:
Możesz to zrobić za pomocą kombinacji
BatchMode
opcji i „parsowania” danych wyjściowych. (ssh
zawsze zwraca 255, jeśli nie uda się połączyć z jakiegokolwiek powodu, więc nie można użyć kodu powrotu do rozróżnienia typów awarii).Po
BatchMode
włączeniu nie jest podejmowana próba podania hasła ani innej interakcji, więc połączenie wymagające hasła zakończy się niepowodzeniem. (UmieściłemConnectTimeout
tam również element, który powinien być dostosowany do twoich potrzeb. I wybrałem naprawdę złe nazwy plików).Możesz wykryć inne rodzaje błędów (np. Brak klucza publicznego serwera), jeśli potrzebujesz bardziej szczegółowej klasyfikacji. Jeśli potrzebujesz wyników w jednym posortowanym pliku, po prostu
cat
różne pliki wyjściowe razem, jak uważasz za stosowne.źródło
Wyszukaj różne narzędzia automatyzujące uruchamianie poleceń na wielu hostach za pośrednictwem ssh. Na przykład z Mussh :
W razie potrzeby masuj wyjście.
Uwaga dodatkowa: dlaczego przechowujesz adresy IP
list.txt
? Nazwy serwerów są wystarczające. Jeśli nazwy, których chcesz użyć, nie są nazwami DNS, skorzystaj zHost
dyrektyw w~/.ssh/config
.źródło
Spodziewaj się, że dostarczy danych wejściowych do twoich interaktywnych poleceń. Klient ssh z flagą -v powie ci, jakie metody autoryzacji akceptuje serwer. Jeśli pojawi się interaktywny monit, zakończ go. Rób, co chcesz, masz wszystko, czego potrzebujesz.
To samo, jedno polecenie, aby rządzić nimi wszystkimi, a w ciemności związać ich ... Hum.
źródło
Polecenie mussh wyświetli tylko błędy, więc możesz po prostu uruchomić go bez debugowania.
źródło