Krajta

Jak používat pexpect v Pythonu

Jak používat pexpect v Pythonu

pohled je populární modul Pythonu pro provádění různých typů automatizovaných úkolů. Různé typy interaktivních aplikací, jako je telnet, ssh, ftp atd., lze automatizovat pomocí tohoto modulu. Jedná se o čistý modul v Pythonu a nevyžaduje kompilátor C nebo rozšíření TCL nebo Expect, jak ostatní očekávají moduly. Může fungovat snadno pouze pomocí tlumočníka Pythonu.  Tento modul lze použít dvěma způsoby. Jedním ze způsobů je použití běh() funkce a dalším způsobem je použití potěr třída. The běh() Tato funkce je snadno použitelná než třída třídění a rychle provádí automatizované úkoly. Konkrétní příkaz nebo program lze provést pomocí běh() funkce, která vrací výstup. Tuto funkci lze použít jako alternativu k os.Systém() funkce. The potěr třída je silnější než běh() funkce, která může vytvořit podřízený program, komunikovat s ním zasláním vstupu a čekáním na odpověď. Tento modul je ve výchozím nastavení nainstalován v python3. V tomto kurzu se ukázaly dva způsoby použití tohoto modulu.

Pomocí funkce run ()

Syntax:

Syntaxe souboru běh() funkce je uvedena níže.  Má mnoho argumentů pro různé účely. Většinou se ale používají první 3 nebo 4 argumenty. První argument této funkce je povinný a převezme příkaz, který tato funkce provede. Může vrátit více výstupů. Pokud sxitstatus argument se používá s Nepravdivé hodnota, vrátí pouze výstup příkazu.

spustit (příkaz, časový limit = 30, withexitstatus = False, události = žádný, extra_args = žádný, logfile = žádný, cwd = žádný, env = žádný, ** kwargs)

Příklad 1: Různá použití funkce run ()

Tři různá použití běh() funkce zobrazeny v následujícím skriptu. 'pwd'výstup příkazu je proveden v prvním běh() funkce, která zobrazí aktuální cestu k pracovnímu adresáři. Dále běh() Funkce se používá k určení podrobností konkrétního souboru a název souboru bude převzat od uživatele. Třetí běh() funkce se používá k vytvoření ssh připojení a načíst všechny soubory a složky z web složku.

# Importujte modul pexpect
importovat pexpect
import os
# Spusťte jednoduchý příkaz
print ("Aktuální pracovní adresář: \ n% s"% pexpect.run ('pwd').dekódovat ("utf-8"))
# Načíst informace o konkrétním souboru
název souboru = vstup ("Zadejte existující název souboru:")
# Zkontrolujte, zda soubor existuje nebo ne
pokud os.cesta.existuje (název souboru):
výstup = pexpect.run ("ls -l" + název souboru, withexitstatus = 0)
print ("Informace o konkrétním souboru: \ n% s"% výstup.dekódovat ("utf-8"))
jiný:
print ("Soubor neexistuje.")
# Načtěte soubory a složky konkrétního adresáře pomocí příkazu ssh
výstup = pexpect.run ("ssh [email protected] 'ss web /'", events = '(?i) heslo ':' 12345 \ n ')
print ("\ nVýstup příkazu ssh: \ n% s"% výstup.dekódovat ("utf-8"))

Výstup

Po provedení výše uvedeného skriptu se zobrazí následující výstup. Na výstupu, doc1.py uvedl jako název souboru a zobrazily se podrobnosti tohoto souboru. Dále seznam všech souborů web složka se zobrazila pomocí ssh spojení.

Používání třídy pro třídění

Syntaxe třídy pro třídění je uvedena níže. Konstruktor této třídy může mít mnoho argumentů pro mnoho účelů. První argument je povinný, který vezme příkaz k provedení.

třída spawn __init __ (self, command, args = [], timeout = 30, maxread = 2000, velikost okna hledání = none, logfile = none, cwd = none, env = none)

Příklad 2: Jednoduché použití třídy spawnu

Jednoduché použití třídy spawnu se ukázalo v následujícím skriptu. 'datum'příkaz zde byl proveden pomocí třídy spawn. Výstup příkazu se načte vytvořením objektu třídy spawn a výstup se vytiskne v čitelném formátu pomocí dekódovat() metoda.

# Importujte modul pexpect
importovat pexpect
# Spusťte příkaz date pomocí spawn
dítě = pexpect.spawn ('date')
# Přečíst podřízený výstup bez generování EOF
dítě.očekávat (pexpect.EOF)
# Uložte text očekávaný řetězcovým vzorem
výstup = dítě.před
# Vytiskněte výstup
print ("Dnes je:", výstup.dekódovat ("utf-8"))

Výstup

Po provedení výše uvedeného skriptu se zobrazí následující výstup.

Příklad 3: Přečíst obsah adresáře pomocí připojení ssh

Vytvoření připojení ssh a čtení seznamu všech souborů a složek konkrétního adresáře se zobrazilo v následujícím skriptu.  Zde bude heslo definovaného uživatele převzato od uživatele k vytvoření ssh připojení pomocí třídy spawn. Pokud je zadané heslo nesprávné, bude skript ukončen zobrazením chybové zprávy.  Pokud je zadané heslo správné, ale terminál není definován, skript zobrazí zprávu o úspěchu připojení, odešle typ terminálu a definuje očekávaný vzor příkazového řádku. Pokud je heslo správné a je definován terminál, skript zobrazí zprávu o úspěchu a příkazový řádek prostředí.

# Importujte modul pexpect
importovat pexpect
# Nastavte uživatelské jméno pro připojení ssh
username = '[email protected]'
# Vezměte si platné heslo od uživatele
Heslo = vstup ("Zadejte přihlašovací heslo% s:"% uživatelské jméno)
# Spusťte příkaz ssh pomocí spawnu
dítě = pexpect.spawn ('ssh' + uživatelské jméno)
# Počkejte na heslo
dítě.expect ('heslo:')
# Zašlete heslo převzaté od uživatele
dítě.sendline (heslo)
# Očekávané tři výstupy
i = dítě.expect (['Povolení odepřeno', 'Typ terminálu', '[# \ $]'])
# i bude 0, pokud se ssh nebude moci připojit
pokud i == 0:
print ("Povolení odepřeno hostitelem. Nelze se přihlásit")
dítě.zabít (0)
# Budu 1, pokud je ssh schopen se připojit, ale terminál není nastaven
elif i == 1:
print ('Připojeno úspěšně.\ nTerminální typ není nastaven.')
dítě.sendline ('vt100')
dítě.expect ('[# \ $]')
# budu 2, pokud je ssh schopen se připojit a je nastaven terminál
elif i == 2:
tisk ('Připojeno úspěšně.')
výzva = dítě.po
print ('Příkazový řádek prostředí:', výzva.dekódovat ("utf-8"))

Výstup

Následující výstup se zobrazí, když je výše uvedený skript spuštěn se špatným heslem.

Následující výstup se zobrazí, když je výše uvedený skript spuštěn se správným heslem.

Závěr

pexpect je velmi užitečný modul pro uživatele Pythonu, který jim pomáhá provádět jejich běžné úkoly automaticky. V tomto tutoriálu byla popsána velmi základní použití modulu pexpect v Pythonu pomocí jednoduchých příkladů, které uživatelům pomohou začít pracovat s tímto modulem.

Hry Nainstalujte si nejnovější Dolphin Emulator pro Gamecube a Wii na Linuxu
Nainstalujte si nejnovější Dolphin Emulator pro Gamecube a Wii na Linuxu
Emulátor Dolphin vám umožní hrát vybrané hry Gamecube a Wii na osobních počítačích se systémem Linux (PC). Jako volně dostupný herní emulátor s otevř...
Hry Jak používat GameConqueror Cheat Engine v Linuxu
Jak používat GameConqueror Cheat Engine v Linuxu
Tento článek popisuje průvodce používáním cheatovacího modulu GameConqueror v systému Linux. Mnoho uživatelů, kteří hrají hry v systému Windows, často...
Hry Nejlepší emulátory herních konzolí pro Linux
Nejlepší emulátory herních konzolí pro Linux
Tento článek uvádí seznam populárního softwaru pro emulaci herních konzolí, který je k dispozici pro Linux. Emulace je vrstva softwarové kompatibility...