Tutorials  /  Linux Basics

Automatisierung von SSH-Logins mit Expect Script: Eine umfassende Anleitung

Ccentron Redaktion · November 2024 ·3 Min. Lesezeit ·Linux Basics, Tutorial

Die Verwaltung mehrerer Linux/Unix-Server erfordert oft den Umgang mit verschiedenen SSH-Anmeldeinformationen, darunter Benutzerkonten und Superuser-(SU)-Passwörter. Diese Daten manuell einzugeben, kann schnell mühsam werden, besonders wenn die Anzahl der Server wächst. Zum Glück bietet das Expect-Scripting-Werkzeug eine effiziente Lösung zur Automatisierung dieses Prozesses. In dieser Anleitung erfahren Sie, wie Sie Expect-Skripte nutzen können, um sich bei SSH-Servern anzumelden, in den Superuser-Modus zu wechseln und Befehle nahtlos auszuführen.

Was ist ein Expect Script?

Expect ist ein leistungsstarkes Werkzeug zur Automatisierung von Interaktionen mit terminalbasierten Anwendungen. Es analysiert die Terminalausgabe, sucht nach bestimmten Mustern (Reguläre Ausdrücke) und reagiert mit vordefinierten Eingaben. Wie der Name schon sagt, „erwartet“ es bestimmte Ausgaben und handelt entsprechend.

VM

Passende Infrastruktur bei centron

Zum Ausprobieren braucht es keine eigene Hardware: ccloud³ VMs mit vollem Root-Zugriff gibt es ab 3,12 € im Monat, stundengenau abgerechnet und in Sekunden bereit. Cloud Server mieten →

Beispiel für ein Expect Script

Nachfolgend ein Beispiel für ein Expect-Skript, das sich bei einem SSH-Server anmeldet, in ein Superuser-Konto wechselt und einen Befehl ausführt:

Code
#!/usr/bin/expect # Usage: sshsudologin.expect      set timeout 60 spawn ssh [lindex $argv 1]@[lindex $argv 0] expect "yes/no" { send "yes\r" expect "*?assword" { send "[lindex $argv 2]\r" } } "*?assword" { send "[lindex $argv 2]\r" } expect "# " { send "su - [lindex $argv 3]\r" } expect ": " { send "[lindex $argv 4]\r" } expect "# " { send "ls -ltr\r" } interact

Das Skript verstehen

Das Skript beginnt mit der #!/usr/bin/expect-Zeile, die den Einsatz des Expect-Interpreters angibt. Standardmäßig läuft ein Expect-Skript nach 10 Sekunden ab. Durch das Setzen eines Timeouts auf 60 Sekunden wird ein reibungsloser Ablauf gewährleistet, selbst wenn Serverantworten verzögert sind. Der expect-Befehl durchsucht die Terminalausgabe nach spezifischen Ausgaben wie „yes/no“-Abfragen oder Passwortaufforderungen. Das Skript reagiert dynamisch auf solche Szenarien.

Server-Prompts können variieren (z. B. „#“, „$“). Stellen Sie sicher, dass die regulären Ausdrücke des Skripts mit Ihrer Serverkonfiguration übereinstimmen. Expect-Skripte können auch nach der Anmeldung Befehle ausführen, in diesem Fall ls -ltr, nachdem Superuser-Zugriff erlangt wurde.

Beispiel für die Nutzung

Hier ist ein Beispiel für das Ausführen des Skripts mit den entsprechenden Argumenten:

Konsole
$ /path/to/sshloginsudo.expect 'yourserver.com' 'ssh_user' 'ssh_password' 'su_user' 'su_password'

Das Skript automatisiert die SSH-Anmeldung, den Wechsel zum angegebenen SU-Benutzer und die Ausführung des Befehls ls -ltr, um den Inhalt eines Verzeichnisses aufzulisten.

Tipps für effiziente Nutzung

Um wiederholte Logins zu vereinfachen, können Sie Aliase für spezifische Befehle erstellen. Zum Beispiel:

Code
alias myserver="/path/to/sshloginsudo.expect 'yourserver.com' 'ssh_user' 'ssh_password' 'su_user' 'su_password'"

Es wird empfohlen, Argumente, insbesondere Passwörter, in einfachen Anführungszeichen zu übergeben, da diese Sonderzeichen enthalten können, die unerwartetes Verhalten verursachen könnten.

Fazit

Expect-Skripte sind ein einfaches, aber effektives Werkzeug zur Automatisierung von SSH-Logins und anderen terminalbasierten Aufgaben. Durch die Integration von regulären Ausdrücken und automatisierten Antworten können diese Skripte Ihnen wertvolle Zeit und Mühe sparen. Ob Sie einen oder viele Server verwalten – mit Expect sorgen Sie für einen reibungslosen Workflow.

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie Linux Basics
Teilen
Noch offene Fragen?

Unser Team hilft Ihnen bei Ihrem konkreten Setup weiter – von Menschen, die die Plattform selbst betreiben.

War dieses Tutorial hilfreich?

Ihre Antwort wird anonym gespeichert und hilft uns, die Tutorials zu verbessern.

Kommentare

Noch keine Kommentare – stellen Sie die erste Frage zu diesem Tutorial.

Zum Kommentieren anmelden

Kommentare stehen centron-Kunden offen. Melden Sie sich in Ihrem Konto an, um eine Frage zu diesem Tutorial zu stellen.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren