Ich habe eine Liste von Servern:
cat list.txt
10.10.10.10 servera
10.11.10.10 serverb
Wie kann ich überprüfen, ob ich mich über ssh bei ihnen anmelden kann oder nicht? Ich meine, standardmäßig sollte ich mich über ssh key auth anmelden können. Kurz gesagt, ich brauche eine Lösung, die die Zeilen (Server) in der list.txt wie folgt sortiert:
- Server, die ich über SSH-Schlüssel anmelden kann
- Server, die zur Eingabe eines Passworts auffordern (das Passwort ist natürlich unbekannt ..)
- Server, die nicht erreichbar sind
ping
ist nicht wirklich ein guter Indikator. Es gibt viele Setups, diessh
Verbindungen zulassen , aber nicht auf Pings antworten.Antworten:
Sie können dies mit einer Kombination aus der
BatchMode
Option und dem "Parsen" der Ausgabe tun . (ssh
Gibt immer 255 zurück, wenn die Verbindung aus irgendeinem Grund nicht hergestellt werden kann, sodass Sie den Rückkehrcode nicht zur Unterscheidung zwischen Fehlertypen verwenden können.)Mit
BatchMode
auf, wird keine Passwortabfrage oder andere Interaktion versucht, so einen connect , die ein Passwort fehl erfordert. (Ich habe dort auch einenConnectTimeout
eingefügt, der an Ihre Bedürfnisse angepasst werden sollte. Und wirklich schlechte Dateinamen ausgewählt.)Sie können andere Arten von Fehlern erkennen (z. B. das Fehlen eines öffentlichen Schlüssels für den Server), wenn Sie eine detailliertere Klassifizierung benötigen. Wenn Sie die Ergebnisse in einer einzelnen, sortierten Datei benötigen, können Sie
cat
die verschiedenen Ausgabedateien nach Belieben zusammenfassen.quelle
Informieren Sie sich über die verschiedenen Tools, die die Ausführung von Befehlen auf mehreren Hosts über ssh automatisieren. Zum Beispiel mit Mussh :
Massieren Sie den Ausgang nach Bedarf.
Randnotiz: Warum speichern Sie IP-Adressen in
list.txt
? Servernamen sind genug. Wenn die Namen, die Sie verwenden möchten, nicht die DNS-Namen sind, verwenden Sie dieHost
Anweisungen in~/.ssh/config
.quelle
expect liefert Eingaben für Ihre interaktiven Befehle. Der ssh-Client mit dem Flag -v gibt an, welche Authentifizierungsmethoden der Server akzeptiert. Wenn Sie zur interaktiven Eingabeaufforderung gelangen, beenden Sie diese. Tu was du willst, du hast alles was du brauchst.
Gleich, ein Befehl, sie alle zu regieren und in der Dunkelheit sie zu binden ... Summen.
quelle
Der Befehl mussh gibt nur Fehler aus, Sie können ihn also einfach ohne Debug ausführen.
quelle