suchen
HeimBetrieb und InstandhaltungBetrieb und Wartung von LinuxBeispiele 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

  • Beispiel


login.exp dient der schnellen und einfachen Remote-Anmeldung. Verwendung: login.exp „exclude“ „${remote_ip}“ „${remote_user}“ „${remote_passwd}“ „${remote_command}“

Hast du es gelernt? Ich hoffe, dass Sie nach der Lektüre dieses Artikels ein tieferes Verständnis für die Interaktion mit der Shell-Automatisierung haben.
#!/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 Wiedergabefunktionsskript

Python realisiert die einfache Funktion des Shell-Sed-Ersatzes

Linux-Shell-FTP-Methode zum Herunterladen von Dateien nach Datum

Das 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!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Linux: Wesentliche Befehle und OperationenLinux: Wesentliche Befehle und OperationenApr 24, 2025 am 12:20 AM

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.

Linux -Operationen: Verwalten von Dateien, Verzeichnissen und BerechtigungenLinux -Operationen: Verwalten von Dateien, Verzeichnissen und BerechtigungenApr 23, 2025 am 12:19 AM

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.

Was ist der Wartungsmodus unter Linux? ErklärtWas ist der Wartungsmodus unter Linux? ErklärtApr 22, 2025 am 12:06 AM

MaintenancemodeInLinuxisaspecialBootenvironmentforcriticalSystemMaintenancetaSs.itAllowsAdministratorStoperformTasksSetPasswords, Reparaturfilmsysteme, andRecoveringingFrombootFailuresinimalenvironment.ToentermineCentontenanceMode, InterrupttheBoBoBoBoBoBoBoBoBeBowooSystem

Linux: Ein tiefes Eintauchen in seine grundlegenden TeileLinux: Ein tiefes Eintauchen in seine grundlegenden TeileApr 21, 2025 am 12:03 AM

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.

Linux -Architektur: Enthüllung der 5 GrundkomponentenLinux -Architektur: Enthüllung der 5 GrundkomponentenApr 20, 2025 am 12:04 AM

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.

Linux -Operationen: Verwendung des WartungsmodusLinux -Operationen: Verwendung des WartungsmodusApr 19, 2025 am 12:08 AM

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.

Linux: Eingeben Sie den Wiederherstellungsmodus (und die Wartung)Linux: Eingeben Sie den Wiederherstellungsmodus (und die Wartung)Apr 18, 2025 am 12:05 AM

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.

Die wesentlichen Komponenten von Linux: Für Anfänger erklärtDie wesentlichen Komponenten von Linux: Für Anfänger erklärtApr 17, 2025 am 12:08 AM

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.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

MantisBT

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

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Sicherer Prüfungsbrowser

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

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)