


Beispiele zur Erläuterung des Expect-Befehls zur Implementierung der automatisierten Shell-Interaktion
In diesem Artikel erklären wir den Expect-Befehl zur Realisierung der automatisierten Shell-Interaktion anhand von Beispielen. Wir können einfache Kontrollflussfunktionen über Shell implementieren, wie z. B. Schleifen, Beurteilung usw. Der folgende Artikel stellt Ihnen hauptsächlich die relevanten Informationen zur Verwendung des Expect-Befehls zur Realisierung der Shell-Automatisierungsinteraktion vor. Freunde in Not können einen Blick darauf werfen.
Hintergrund
Es gibt viele Szenarien in Linux-Skripten für Remote-Vorgänge, wie z. B. Remote-Anmeldung SSH, Remote-Kopie SCP, Dateiübertragung SFTP usw. Für alle diese Befehle ist die Eingabe eines Sicherheitskennworts erforderlich. Die normale Verwendung des Befehls erfordert die manuelle Eingabe des Kennworts und die Annahme der Sicherheitsüberprüfung. Um automatisierte Remote-Operationen zu erreichen, können wir die Funktionalität von Expect ausleihen.
expect ist eine kostenlose Programmiersprache, die zur Implementierung automatischer und interaktiver Kommunikationsaufgaben ohne menschliches Eingreifen verwendet wird. Expect entwickelt sich ständig weiter, seine Funktionen werden immer leistungsfähiger und es ist zu einem leistungsstarken Assistenten für Systemadministratoren geworden. Um Expect auf dem System ausführen zu können, muss zunächst Tcl installiert werden.
Expect-Installation
Expect wird basierend auf Tcl erstellt, daher sollten wir zuerst Tcl installieren, bevor wir Expect installieren.
(1) Tcl-Installation
Homepage: http://www.tcl.tk
Download-Adresse: http://www.tcl.tk
Download-Adresse: http://www. tcl .tk/software/tcltk/downloadnow84.tml
wget http://nchc.dl.sourceforge.net/sourceforge/tcl/tcl8.4.11-src.tar.gz
1. Laden Sie das Quellcodepaket herunter
tar xfvz tcl8.4.11-src.tar.gz
2. Entpacken Sie das Quellcodepaket
cd tcl8.4.11/unix ./configure --prefix=/usr/tcl --enable-shared make make install
3. Installationskonfiguration
Hinweis:
1 Geben Sie nach Abschluss der Installation das Stammverzeichnis des TCL-Quellcodes ein und kopieren Sie tclUnixPort.h darunter Unterverzeichnis unix in das Unterverzeichnis generic middle.
2. Löschen Sie den TCL-Quellcode noch nicht, da er noch für den erwarteten Installationsprozess benötigt wird.
(2) Installation erwarten (erfordert Tcl-Bibliothek)
Homepage: http://expect.nist.gov/
wget http://sourceforge.net/projects/expect/files/Expect/5.45/expect5.45.tar.gz/download
1 Quellpaket
tar xzvf expect5.45.tar.gz
2. Entpacken Sie das Quellpaket
cd expect5.45 ./configure --prefix=/usr/expect --with-tcl=/usr/tcl/lib --with-tclinclude=../tcl8.4.11/generic make make install ln -s /usr/tcl/bin/expect /usr/expect/bin/expect
3. Installationskonfiguration
erwarten Der Kern besteht aus Spawn, Expect, Send und Set.
spawn ruft den auszuführenden Befehl auf
expect wartet auf das Erscheinen der Eingabeaufforderungsinformationen, das heißt, um die Benutzereingabeaufforderung zu erfassen:
send sendet Werte, die eine Interaktion erfordern, und ersetzt die manuelle Eingabe des Benutzers
set setzt variable Werte
Interaktion nach Abschluss der Ausführung Behalten Sie den interaktiven Status bei und geben Sie die Kontrolle an die Konsole. Zu diesem Zeitpunkt können Sie manuell arbeiten. Wenn kein solcher Satz vorhanden ist, wird er nach Abschluss der Anmeldung beendet, anstatt auf dem Remote-Terminal zu bleiben.
expect eof Dies muss hinzugefügt werden und entspricht spawn, um die Beendigung der Capture-Terminal-Ausgabeinformationen anzuzeigen, ähnlich wie if....endif
expect Das Skript muss mit „interact“ enden oder „expect eof“ reicht normalerweise aus, um automatisierte Aufgaben auszuführen.
Andere Einstellungen
Erwartung auf nie Timeout einstellen, Timeout auf -1 setzen
Erwartung auf 300 einstellen Zweites Timeout: Wenn nach mehr als 300 kein Expect-Inhalt angezeigt wird, Exit-Set-Timeout 300
Expect-Schreibsyntax
Expect verwendet TCL-Syntax
Ein Tcl-Befehl besteht aus durch Leerzeichen getrennten Wörtern. Das erste Wort ist der Befehlsname und der Rest sind Befehlsparameter
cmd arg arg arg- $-Symbol stellt den Wert einer Variablen dar. In diesem Beispiel lautet der Variablenname foo.
$foo
- Die eckigen Klammern führen einen verschachtelten Befehl aus . Wenn Sie beispielsweise das Ergebnis eines Befehls als Argument an einen anderen Befehl übergeben möchten, verwenden Sie die Notation
[cmd arg]
- doppelte Anführungszeichen, um das zu kennzeichnen Phrase als Argument für den Befehl. Das „$“-Symbol und eckige Klammern werden weiterhin in doppelten Anführungszeichen interpretiert.
„some stuff“
- Klammern kennzeichnen eine Phrase auch als Argument für ein Befehl. Andere Symbole werden jedoch nicht interpretiert.
{einige Dinge🎜>
Das Backslash-Symbol wird verwendet, um spezielle Symbole in Anführungszeichen zu setzen. Beispiel: n steht für einen Zeilenumbruch . Das Backslash-Symbol wird auch verwendet. Schließen Sie die besondere Bedeutung des „$“-Symbols, der Anführungszeichen, der eckigen Klammern und der geschweiften Klammern
login.exp dient der schnellen und einfachen Remote-Anmeldung. Verwendung: login.exp „exclude“ „${remote_ip}“ „${remote_user}“ „${remote_passwd}“ „${remote_command}“
#!/usr/bin/expect -f ########################################################## # 通过SSH登陆和执行命令 #参数:1.Use_Type [check/execute] # 2.SSHServerIp # 3.SSHUser # 4.SSHPassword # 5.CommandList [多个命令间以;间隔] #返回值: # 0 成功 # 1 参数个数不正确 # 2 SSH 服务器服务没有打开 # 3 SSH 用户密码不正确 # 4 连接SSH服务器超时 ########################################################## proc usage {} { regsub ".*/" $::argv0 "" name send_user "Usage:\n" send_user " $name Use_Type SSHServerIp SSHUser SSHPassword CommandList\n" exit 1 } ## 判断参数个数 if {[llength $argv] != 5} { usage } #设置变量值 set Use_Type [lindex $argv 0] set SSHServerIp [lindex $argv 1] set SSHUser [lindex $argv 2] set SSHPassword [lindex $argv 3] set CommandList [lindex $argv 4] #spawn ping ${SSHServerIp} -w 5 #expect { # -nocase -re "100% packet loss" { # send_error "Ping ${SSHServerIp} is unreachable, Please check the IP address.\n" # exit 1 # } #} set timeout 360 set resssh 0 #定义变量标记ssh连接时是否输入yes确认 set inputYes 0 set ok_string LOGIN_SUCCESS if {$Use_Type=="check"} { #激活ssh连接,如果要需要输入yes确认,输入yes,设置inputYes为1,否则输入ssh密码 spawn ssh ${SSHUser}@${SSHServerIp} "echo $ok_string" } else { spawn ssh ${SSHUser}@${SSHServerIp} "$CommandList" } expect { -nocase -re "yes/no" { send -- "yes\n" set inputYes 1 } -nocase -re "assword: " { send -- "${SSHPassword}\n" set resssh 1 } #-nocase -re "Last login: " { # send -- "${CommandList}\n" #} $ok_string {} -nocase -re "Connection refused" { send_error "SSH services at ${SSHServerIp} is not active.\n" exit 2 } timeout { send_error "Connect to SSH server ${SSHUser}@${SSHServerIp} timeout(10s).\n" exit 4 } } #如果输入了yes确认,输入ssh密码 if {$inputYes==1} { expect { -nocase -re "assword: " { send -- "${SSHPassword}\n" set resssh 1 } } } #如果出现try again或者password:提示,说明输入的用户密码错误,直接退出。 if {$resssh==1} { expect { -nocase -re "try again" { send_error "SSH user:${SSHUser} passwd error.\n" exit 3 } -nocase -re "assword:" { send_error "SSH user:${SSHUser} passwd error.\n" exit 3 } eof {} } } send_error -- "$expect_out(buffer)" #-nocase -re "No such user" { # send_error "No such user.\n" # exit 5 # } #exit
Verwandte Empfehlungen:
Linux Shell Produktionsaufzeichnungs- und WiedergabefunktionsskriptPython realisiert die einfache Funktion des Shell-Sed-ErsatzesLinux-Shell-FTP-Methode zum Herunterladen von Dateien nach DatumDas obige ist der detaillierte Inhalt vonBeispiele zur Erläuterung des Expect-Befehls zur Implementierung der automatisierten Shell-Interaktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Unentbehrliche Befehle in Linux gehören: 1.LS: Listenverzeichnisinhalt; 2.CD: Arbeitsverzeichnis ändern; 3.MKDIR: Erstellen Sie ein neues Verzeichnis; 4.RM: Datei oder Verzeichnis löschen; 5.CP: Datei oder Verzeichnis kopieren; 6.MV: Datei oder Verzeichnis verschieben oder umbenennen. Diese Befehle helfen Benutzern, Dateien und Systeme effizient zu verwalten, indem sie mit dem Kernel interagieren.

In Linux verwendet die Datei- und Verzeichnisverwaltung LS-, CD-, MKDIR-, RM-, CP-, MV -Befehle und Berechtigungsverwaltung. 1. Datei- und Verzeichnisverwaltungsbefehle wie LS-L-Liste detaillierte Informationen, MKDIR-P erstellen rekursiv Verzeichnisse. 2. Befehle für Berechtigungsverwaltungen wie CHMOD755File -Dateiberechtigungen, CHOWNUSERFILE -Änderungen Dateibesitzer und CHGRPGroupFile -Änderungsdateigruppe. Diese Befehle basieren auf der Dateisystemstruktur sowie auf Benutzer- und Gruppensystemen sowie über Systemaufrufe und Metadaten.

MaintenancemodeInLinuxisaspecialBootenvironmentforcriticalSystemMaintenancetaSs.itAllowsAdministratorStoperformTasksSetPasswords, Reparaturfilmsysteme, andRecoveringingFrombootFailuresinimalenvironment.ToentermineCentontenanceMode, InterrupttheBoBoBoBoBoBoBoBoBeBowooSystem

Zu den Kernkomponenten von Linux gehören Kernel, Dateisystem, Shell, Benutzer- und Kernelraum, Gerätetreiber sowie Leistungsoptimierung sowie Best Practices. 1) Der Kernel ist der Kern des Systems und verwaltet Hardware, Speicher und Prozesse. 2) Das Dateisystem organisiert Daten und unterstützt mehrere Typen wie Ext4, BTRFS und XFS. 3) Shell ist das Kommandozentrum, in dem Benutzer mit dem System interagieren und das Skript unterstützt. 4) Separate Benutzerraum vom Kernelraum, um die Systemstabilität zu gewährleisten. 5) Der Gerätetreiber verbindet die Hardware mit dem Betriebssystem. 6) Die Leistungsoptimierung umfasst die Konfiguration des Tuning -Systems und die folgenden Best Practices.

Die fünf grundlegenden Komponenten des Linux -Systems sind: 1. Kernel, 2. Systembibliothek, 3. System Utilities, 4. Grafische Benutzeroberfläche, 5. Anwendungen. Der Kernel verwaltet Hardware -Ressourcen, die Systembibliothek bietet vorkompilierte Funktionen, Systemversorgungsunternehmen werden für die Systemverwaltung verwendet, die GUI bietet visuelle Interaktion und Anwendungen verwenden diese Komponenten, um Funktionen zu implementieren.

Der Linux -Wartungsmodus kann über das Grub -Menü eingegeben werden. Die spezifischen Schritte sind: 1) Wählen Sie den Kernel im GRUB -Menü aus und drücken Sie 'e', um zu bearbeiten, 2) hinzu 'Single' oder '1' am Ende der "Linux" -Zeile 3) Drücken Sie Strg X, um zu starten. Der Wartungsmodus bietet eine sichere Umgebung für Aufgaben wie Systemreparaturen, Kennwortreset und System -Upgrade.

Die Schritte zur Eingabe des Linux -Wiederherstellungsmodus sind: 1. Starten Sie das System neu und drücken Sie die spezifische Taste, um das Grub -Menü einzugeben. 2. Wählen Sie die Option mit (RecoveryMode) aus; 3. Wählen Sie den Vorgang im Menü Wiederherstellungsmodus wie FSCK oder Root aus. Mit dem Wiederherstellungsmodus können Sie das System im Einzelbenutzermodus starten, Dateisystemprüfungen und -reparaturen durchführen, Konfigurationsdateien bearbeiten und andere Vorgänge zur Lösung von Systemproblemen unterstützen.

Zu den Kernkomponenten von Linux gehören Kernel, Dateisystem, Shell und gemeinsame Werkzeuge. 1. Der Kernel verwaltet Hardware -Ressourcen und bietet grundlegende Dienste an. 2. Das Dateisystem organisiert und speichert Daten. 3. Shell ist die Schnittstelle, in der Benutzer mit dem System interagieren können. 4. Common Tools helfen dabei, tägliche Aufgaben zu erledigen.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Sicherer Prüfungsbrowser
Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)