2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Shell Erwarten Sie eine automatisierte Interaktion
Während des täglichen Linux-Betriebs und der Wartung ist es häufig erforderlich, sich aus der Ferne beim Server anzumelden. Während des Anmeldevorgangs ist ein interaktiver Vorgang erforderlich, und Sie müssen möglicherweise Ja/Nein und andere Informationen eingeben, sodass erwartet wird, um eine Interaktion zu erreichen .
Schlüsselsyntax
❶[#!/usr/bin/expect]
Diese Zeile teilt dem Betriebssystem mit, welche Shell zum Ausführen des Codes im Skript verwendet werden soll. Erwartet wird hier eigentlich das Gleiche wie bash unter Linux und cmd unter Windows. HINWEIS: Diese Zeile muss die erste Zeile im Skript sein.
❷einstellen
Das Standard-Timeout von Expect beträgt 10 Sekunden. Das Sitzungs-Timeout kann über den Set-Befehl festgelegt werden. Wenn das Timeout nicht begrenzt ist, sollte es auf -1 gesetzt werden.
Beispiel: set timeout 300 // Zeigt an, dass das Sitzungszeitlimit 300 Sekunden beträgt
Beispiel: set timeout -1/setting/never timeout, allgemeine Einstellungen
Hinweis: Warum müssen Sie ein Zeitlimit festlegen? Da die Standardzeit 10 Sekunden beträgt, wird die Verbindung während der interaktiven Ausführung wahrscheinlich getrennt, was dazu führt, dass die Aufgabenausführung vor dem Abschluss abgebrochen wird. Eine geplante Aufgabe unseres Unternehmens, die Dateien von einem Remote-FTP synchronisierte, wurde immer beendet. Später habe ich das Timeout auf -1 gesetzt und es war in Ordnung.
❸Laichen
Auf spawn folgt normalerweise ein Linux-Ausführungsbefehl, was bedeutet, dass eine Sitzung geöffnet, der Prozess gestartet und nachfolgende Interaktionsinformationen verfolgt werden.
❹erwarten
Nur die Ausführungsergebnisse der von Spawn ausgeführten Befehle werden von Expect erfasst. Dazu gehören hauptsächlich Standardeingabeaufforderungsinformationen, EOF und Timeout. Warten Sie, bis die Eingabeaufforderung angezeigt wird. Dies ist die Eingabeaufforderung zum Erfassen von Benutzereingaben:
➎senden
Das Senden von Werten, die eine Interaktion erfordern, ersetzt die manuelle Eingabe des Benutzers. Dieser Befehl kann nicht automatisch eingegeben oder in die Zeile verschoben werden und erfordert im Allgemeinen das Hinzufügen von r (Wagenrücklauf) oder n
erwarten Sie „password“{ send „abc123r“} //Der Sendeteil derselben Zeile muss {} haben
❻Terminator erwartet eof/interact
Erwarte EOF
Dies muss entsprechend spawn hinzugefügt werden, was bedeutet, dass die Ausgabeinformationen des Capture-Terminals beendet werden, ähnlich wie if...endif
interagieren
Behalten Sie nach Abschluss der Ausführung den interaktiven Status bei und übertragen Sie die Steuerung an die Konsole. Zu diesem Zeitpunkt kann der manuelle Vorgang ausgeführt werden. Wenn kein solcher Satz vorhanden ist, wird er nach Abschluss der Anmeldung beendet, anstatt auf dem Remote-Terminal zu bleiben.
PS: Das Expect-Skript muss mit „interact“ oder „expect eof“ enden, um automatisierte Aufgaben auszuführen.
Beispiel
Fügen Sie den Expect-Befehl in das Shell-Skript ein. Das Format ist wie folgt
Beispiel 1: 22.sh-Skript zum Erstellen eines Ordners
#!/bin/sh erwarten SSH-Version 10.1.1.196 erstellen erwarte Passwort {send xxxn} sende cd /home/cg/hmf_app/testr sende mkdir newworkr sende exitr Erwarte EOF Ende der Laufzeit |
Beispiel 2: Ordner-Shell-Skript erstellen
erwarten SSH-Version 10.1.1.196 erstellen erwarte Passwort {send xxxn} sende cd /home/cg/hmf_app/testr sende mkdir newworkr sende exitr Erwarte EOF Ende der Laufzeit |
Beispiel 3: Dateien kopieren
erwarten setze Timeout -1 spawn scp [email protected]:/data/package/casb/$casbzip ./ erwarte Passwort {send xxxn} Erwarte EOF Ende der Laufzeit |
Anmerkung:
Ende der Laufzeit
...
Ende der Laufzeit
Stellt ein Shell-Skript dar
beziehen auf:Shell erwartet automatisierte Interaktion_Shell-Skript, interaktive automatische Eingabe von Inhalten – CSDN-Blog