So verwenden Sie bash / expect, um zu überprüfen, ob ein SSH-Login funktioniert

Mein Team verwaltet viele Server, und die Unternehmensrichtlinie schreibt vor, dass die Kennwörter auf diesen Servern alle paar Wochen geändert werden müssen. Manchmal ist unsere offizielle Datenbank mit Passwörtern aus irgendeinem Grund nicht mehr aktuell (die Leute vergessen normalerweise, sie zu aktualisieren), aber wir können dies manchmal erst Monate später feststellen, da wir nicht jeden Server konsequent nutzen.

Ich möchte ein Skript schreiben, das die Passwörter aus der Datenbank entfernt, und mit diesen Passwörtern jeden Abend versuchen, sich bei jedem Server (ssh) anzumelden, und dem Team eine E-Mail mit den Ergebnissen senden. Ich kann die Datenbank nach Anmeldeinformationen durchsuchen, aberIch bin nicht sicher, wie ich überprüfen soll, ob die SSH-Anmeldung erfolgreich war oder nicht.

Ich kann für diese Aufgabe keine Authentifizierung mit öffentlichem Schlüssel verwenden. ichwollen Kennwortauthentifizierung, damit ich die Kennwörter überprüfen kann.

Ich deaktiviere die Public-Key-Authentifizierung durch Angabe der folgenden Datei:

PasswordAuthentication=yes
PubkeyAuthentication=no

Meine Versuche am Expect-Skript:

# $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\'"

Ich dachte, vielleicht könnte der Austrittsstatus den Erfolg anzeigen? Auf den Manualseiten konnte jedoch nichts gefunden werden.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage