Jak używać bash / oczekiwać sprawdzenia, czy działa logowanie SSH
Mój zespół zarządza wieloma serwerami, a zasady firmy wymagają, aby hasła na tych serwerach były zmieniane co kilka tygodni. Zdarza się, że nasza oficjalna baza danych haseł z jakiegoś powodu przestaje być aktualna (zazwyczaj zapomina się o aktualizacji), ale czasami nie możemy tego zidentyfikować kilka miesięcy później, ponieważ nie używamy konsekwentnie każdego serwera.
Chcę napisać skrypt, który zeskanuje hasła z bazy danych i użyje tych haseł do próby zalogowania się (ssh) na każdy serwer każdej nocy i wysłania wiadomości e-mail z wynikami do zespołu. Jestem w stanie zeskrobać bazę danych pod kątem danych logowania, aleNie wiem, jak sprawdzić, czy logowanie ssh było pomyślne czy nie.
Nie mogę użyć uwierzytelniania kluczem publicznym dla tego zadania. jachcieć uwierzytelnianie hasłem, dzięki czemu mogę zweryfikować hasła.
Wyłączam uwierzytelnianie za pomocą klucza publicznego, określając następujący plik:
PasswordAuthentication=yes
PubkeyAuthentication=no
Moje próby skryptu oczekującego:
# $1 = host, $2 = user, $3 = password, $4 = config file
expect -c "spawn ssh $2@$1 -F $4
expect -re \".*?assword.*?\"
send \"$3\n\"
...
send \'^D\'"
Myślałem, że może status wyjścia może wskazywać na sukces? Nie można jednak znaleźć niczego na stronach podręcznika.