Wie man Pexpect in Python benutzt

Wie man Pexpect in Python benutzt

pexect ist ein beliebtes Python -Modul für verschiedene Arten von automatisierten Aufgaben. Verschiedene Arten interaktiver Anwendungen wie Telnet, SSH, FTP usw., kann mit diesem Modul automatisiert werden. Es handelt. Es kann einfach funktionieren, indem es nur einen Python -Dolmetscher verwenden. Dieses Modul kann auf zwei Arten verwendet werden. Eine Möglichkeit besteht darin, die zu verwenden laufen() Funktion und eine andere Möglichkeit ist zu verwenden laichen Klasse. Der laufen() Funktion ist einfach zu bedienen als die Spawn -Klasse und führt die automatisierten Aufgaben schnell aus. Der bestimmte Befehl oder ein Programm können von der ausgeführt werden laufen() Funktion, die die Ausgabe zurückgibt. Diese Funktion kann als Alternative zur Betriebssystem.System() Funktion. Der laichen Klasse ist mächtiger als die laufen() Funktion, die ein Kinderprogramm hervorbringen, mit ihm interagieren, indem Sie Eingaben senden und auf die Antwort warten. Dieses Modul ist standardmäßig in Python3 installiert. Die beiden Möglichkeiten, dieses Modul zu verwenden, haben in diesem Tutorial gezeigt.

Verwenden Sie Run () Funktion

Syntax:

Die Syntax der laufen() Funktion ist unten angegeben. Es hat viele Argumente für verschiedene Zwecke. Aber die ersten 3 oder 4 Argumente werden meistens verwendet. Das erste Argument dieser Funktion ist obligatorisch, das den Befehl nimmt, dass diese Funktion ausgeführt wird. Es kann mehrere Ausgänge zurückgeben. Wenn der withexitstatus Argument wird mit dem verwendet FALSCH Wert, es wird nur die Ausgabe des Befehls zurückgeben.

Run (Befehl, Timeout = 30, withExitstatus = false, Ereignisse = Keine, extra_args = none, logfile = none, cwd = none, env = none, ** kwargs)

Beispiel 1: Unterschiedliche Verwendungen von Run () -Funktion

Drei verschiedene Verwendungen der laufen() Die Funktion hat im folgenden Skript gezeigt. Der 'PWDDie Ausgabe des Befehls wird im ersten ausgeführt laufen() Funktion, die den aktuellen Arbeitsverzeichnispfad anzeigt. Als nächstes die laufen() Die Funktion wird verwendet, um die Details einer bestimmten Datei zu bestimmen, und der Dateiname wird vom Benutzer entnommen. Der dritte laufen() Funktion wird verwendet, um das zu machen ssh Verbindung und Abrufen aller Dateien und Ordner aus dem Netz Ordner.

# PEXPECT -Modul importieren
pexpect importieren
OS importieren
# Einfacher Befehl ausführen
drucken ("das aktuelle Arbeitsverzeichnis: \ n %s" %pexpect.run ('pwd').decode ("utf-8"))
# Die Informationen einer bestimmten Datei abrufen
Dateiname = Eingabe ("Geben Sie einen vorhandenen Dateinamen ein:")
# Überprüfen Sie, ob die Datei existiert oder nicht
Wenn os.Weg.existiert (Dateiname):
output = pexpect.run ("ls -l"+Dateiname, withExitstatus = 0)
Druck ("Informationen einer bestimmten Datei: \ n %s" %Output.decode ("utf-8"))
anders:
drucken ("Datei existiert nicht."))
# Rufen Sie die Dateien und den Ordner eines bestimmten Verzeichnisses mit dem SSH -Befehl ab
output = pexpect.run ("ssh fahmida@localhost 'ls web/'", events = '(' ('(?i) Passwort ':' 12345 \ n ')
print ("\ n der Ausgabe des SSH -Befehls: \ n %s" %Output.decode ("utf-8"))

Ausgang

Die folgende Ausgabe wird nach der Ausführung des obigen Skripts angezeigt. Im Ausgang, doc1.py hat als Dateiname angegeben, und die Details dieser Datei wurden gezeigt. Als nächstes die Liste aller Dateien der Dateien Netz Ordner hat verwendet ssh Verbindung.

Verwenden von Spawn -Klasse

Die Syntax der Spawn -Klasse ist unten angegeben. Der Konstruktor dieser Klasse kann viele Argumente für viele Zwecke annehmen. Das erste Argument ist obligatorisch, das den Befehl zur Ausführung übernimmt.

Klasse Spawn __init __ (Self, Befehl, args = [], timeout = 30, maxread = 2000, Suchfenstergröße = Keine, logfile = Keine, cwd = none, env = keine)

Beispiel 2: Einfache Verwendung der Spawn-Klasse

Die einfache Verwendung der Spawn -Klasse hat im folgenden Skript gezeigt. Der 'DatumDer Befehl wurde hier unter Verwendung der Spawn -Klasse ausgeführt. Die Ausgabe des Befehls wird abgerufen, indem das Objekt der Spawn-Klasse erstellt wird, und die Ausgabe wird in menschlich lesbarem Format mit der Verwendung der Ausgabe gedruckt dekodieren() Methode.

# PEXPECT -Modul importieren
pexpect importieren
# Führen Sie den Befehl Datum mit Spawn aus
Kind = PEXPECT.Spawn ('Date')
# Lesen Sie die Kinderleistung ohne EOF zu erzeugen
Kind.erwarten (pexpect.Eof)
# Den Text speichern, der vom Zeichenfolgenmuster erwartet wird
Ausgabe = Kind.Vor
# Drucken Sie die Ausgabe
Druck ("Heute ist:", Ausgabe.decode ("utf-8"))

Ausgang

Die folgende Ausgabe wird nach der Ausführung des obigen Skripts angezeigt.

Beispiel-3: Lesen Sie den Inhalt des Verzeichnisses mithilfe der SSH-Verbindung durch

Erstellen von SSH -Verbindung und Lesen der Liste aller Dateien und Ordner eines bestimmten Verzeichnisses wurden im folgenden Skript gezeigt. Hier wird das Kennwort des definierten Benutzer. Wenn das angegebene Passwort falsch ist, wird das Skript beendet, indem eine Fehlermeldung angezeigt wird. Wenn das angegebene Passwort korrekt ist, das Terminal jedoch nicht definiert ist, zeigt das Skript die Erfolgsnachricht für die Verbindung an, senden. Wenn das Passwort korrekt ist und das Terminal definiert ist, zeigt das Skript die Erfolgsnachricht und die Shell -Eingabeaufforderung an.

# PEXPECT -Modul importieren
pexpect importieren
# Setzen Sie den Benutzernamen für die SSH -Verbindung
userername = 'fahmida@localhost'
# Nehmen Sie ein gültiges Passwort vom Benutzer
Password = input ("Geben Sie das Anmeldekennwort von %s:" %Benutzername ein) ein
# SSH -Befehl mit Spawn ausführen
Kind = PEXPECT.Spawn ('SSH' + Benutzername)
# Warten Sie auf das Passwort
Kind.erwarten ('Passwort:')
# Senden Sie das vom Benutzer aufgenommene Passwort
Kind.SENDLINE (Passwort)
# Erwartete drei Ausgaben
I = Kind.Erwarten (['Erlaubnis abgelehnt', 'Terminaltyp', '[#\ $]'])
# Ich werde 0 sein, wenn SSH keine Verbindung herstellen kann
Wenn ich == 0:
drucken ("Erlaubnis vom Host abgelehnt. Anmeldung kann nicht ")
Kind.töten (0)
# Ich werde 1 sein, wenn SSH eine Verbindung herstellen kann, aber das Terminal nicht eingestellt ist
elif i == 1:
drucken ('erfolgreich verbunden.\ nterminaler Typ ist nicht eingestellt.'))
Kind.sendline ('vt100')
Kind.erwarten ('[#\ $]')
# Ich werde 2 sein, wenn SSH eine Verbindung herstellen kann und das Terminal eingestellt ist
elif i == 2:
drucken ('erfolgreich verbunden.'))
Eingabeaufforderung = Kind.nach
print ('Shell -Eingabeaufforderung:', Eingabeaufforderung.decode ("utf-8"))

Ausgang

Die folgende Ausgabe wird angezeigt, wenn das obige Skript mit dem falschen Passwort ausgeführt wird.

Die folgende Ausgabe wird angezeigt, wenn das obige Skript mit dem richtigen Passwort ausgeführt wird.

Abschluss

Pexpect ist ein sehr hilfreiches Modul für Python -Benutzer, das ihnen hilft, ihre regulären Aufgaben automatisch zu erledigen. Die sehr grundlegenden Verwendungen des Python -Pythonmoduls wurden in diesem Tutorial beschrieben, indem einfache Beispiele verwendet werden, um den Benutzern dabei zu helfen, mit diesem Modul zu arbeiten.