Python

Ako používať pexpect v Pythone

Ako používať pexpect v Pythone

pexpect je populárny modul Python na vykonávanie rôznych typov automatizovaných úloh. Rôzne typy interaktívnych aplikácií ako telnet, ssh, ftp atď., je možné automatizovať pomocou tohto modulu. Je to čistý modul v jazyku Python a nevyžaduje kompilátor C ani rozšírenia TCL či Expect, ako to ostatní očakávajú od modulov. Môže ľahko fungovať iba pomocou tlmočníka Pythonu.  Tento modul je možné použiť dvoma spôsobmi. Jedným zo spôsobov je použitie run () funkciou a ďalším spôsobom je použitie plodiť trieda. The run () Táto funkcia je ľahko použiteľná ako trieda plodenia a rýchlo vykonáva automatizované úlohy. Príslušný príkaz alebo program môže vykonať run () funkcia, ktorá vráti výstup. Túto funkciu je možné použiť ako alternatívu k os.systém () funkcia. The plodiť trieda je výkonnejšia ako run () funkcia, ktorá môže vytvoriť podradený program, komunikovať s ním odoslaním vstupu a čakaním na odpoveď. Tento modul je predvolene nainštalovaný v python3. V tejto príručke sú uvedené dva spôsoby použitia tohto modulu.

Pomocou funkcie run ()

Syntax:

Syntax súboru run () funkcia je uvedená nižšie.  Má veľa argumentov na rôzne účely. Väčšinou sa ale používajú prvé 3 alebo 4 argumenty. Prvý argument tejto funkcie je povinný a berie príkaz, ktorý táto funkcia vykoná. Môže vrátiť viac výstupov. Ak withexitstatus argument sa používa s Falošné hodnota vráti iba výstup príkazu.

run (príkaz, timeout = 30, withexitstatus = False, events = None, extra_args = None, logfile = None, cwd = None, env = None, ** kwargs)

Príklad-1: Rôzne použitia funkcie run ()

Tri rôzne použitia run () funkcie zobrazené v nasledujúcom skripte. „pwd'výstup príkazu sa vykoná v prvom run () funkcia, ktorá zobrazí aktuálnu cestu k pracovnému adresáru. Ďalej run () Funkcia sa používa na určenie podrobností konkrétneho súboru a názov súboru sa prevezme od používateľa. Tretia run () funkcia sa používa na vytvorenie súboru ssh pripojenie a načítať všetky súbory a priečinky z web priečinok.

# Importovať modul pexpect
importovať pexpect
import os
# Spustite jednoduchý príkaz
print ("Aktuálny pracovný adresár: \ n% s"% pexpect.run ('pwd').dekódovať ("utf-8"))
# Načítať informácie o konkrétnom súbore
názov súboru = vstup ("Zadajte existujúci názov súboru:")
# Skontrolujte, či súbor existuje alebo nie
ak os.cesta.existuje (názov súboru):
výstup = pexpect.run ("ls -l" + názov súboru, withexitstatus = 0)
print ("Informácie o konkrétnom súbore: \ n% s"% výstup.dekódovať ("utf-8"))
inak:
print ("Súbor neexistuje.„)
# Načítajte súbory a priečinky konkrétneho adresára pomocou príkazu ssh
výstup = pexpect.run ("ssh [chránený e-mailom] je web / '", udalosti = ' (?i) heslo ':' 12345 \ n ')
print ("\ nVýstup príkazu ssh: \ n% s"% výstup.dekódovať ("utf-8"))

Výkon

Po vykonaní vyššie uvedeného skriptu sa zobrazí nasledujúci výstup. Vo výstupe, doc1.py ako názov súboru a zobrazili sa podrobnosti tohto súboru. Ďalej zoznam všetkých súborov web priečinok zobrazil pomocou ssh spojenie.

Používa sa trieda trenia

Syntax triedy pre trenie je uvedená nižšie. Konštruktor tejto triedy môže mať veľa argumentov na mnohé účely. Prvý argument je povinný, ktorý prevezme príkaz.

trieda spawn __init __ (self, command, args = [], timeout = 30, maxread = 2000, veľkosť vyhľadávacieho okna = none, logfile = none, cwd = none, env = none)

Príklad 2: Jednoduché použitie triedy spawnu

Jednoduché použitie triedy spawnu je uvedené v nasledujúcom skripte. „dátum'príkaz tu bol vykonaný pomocou triedy spawn. Výstup príkazu sa získa vytvorením objektu triedy spawn a výstup sa vytlačí v ľudskom formáte čitateľnom pomocou dekódovať () metóda.

# Importovať modul pexpect
importovať pexpect
# Spustite príkaz date pomocou spawnu
dieťa = pexpect.trieť („dátum“)
# Čítať podradený výstup bez generovania EOF
dieťa.očakávať (pexpect.EOF)
# Uložte text, ktorý sa očakáva podľa vzoru reťazca
výstup = dieťa.predtým
# Vytlačte výstup
print ("Dnes je:", výstup.dekódovať ("utf-8"))

Výkon

Po vykonaní vyššie uvedeného skriptu sa zobrazí nasledujúci výstup.

Príklad-3: Čítajte obsah adresára pomocou pripojenia ssh

Vytvorenie pripojenia ssh a prečítanie zoznamu všetkých súborov a priečinkov konkrétneho adresára sa zobrazilo v nasledujúcom skripte.  Tu sa od používateľa odoberie heslo definovaného používateľa na vytvorenie ssh pripojenia pomocou triedy na vytvorenie. Pokiaľ je zadané heslo nesprávne, bude skript ukončený zobrazením chybovej správy.  Ak je zadané heslo správne, ale terminál nie je definovaný, potom skript zobrazí správu o úspešnom pripojení, odošle typ terminálu a definuje očakávaný vzor príkazového riadku. Ak je heslo správne a je definovaný terminál, skript zobrazí správu o úspechu a príkazový riadok shellu.

# Importovať modul pexpect
importovať pexpect
# Nastavte užívateľské meno pre ssh pripojenie
username = '[email protected]'
# Vezmite si platné heslo od používateľa
Heslo = vstup ("Zadajte prihlasovacie heslo% s:"% používateľské meno)
# Spustite príkaz ssh pomocou zobrazenia
dieťa = pexpect.spawn ('ssh' + meno používateľa)
# Počkajte na heslo
dieťa.expect ('heslo:')
# Pošlite heslo prevzaté od používateľa
dieťa.sendline (heslo)
# Očakávané tri výstupy
i = dieťa.expect (['' Povolenie odmietnuté ',' Typ terminálu ',' [# \ $] '])
# i bude 0, ak sa ssh nebude môcť pripojiť
ak i == 0:
print ("Povolenie bolo odmietnuté hostiteľom. Nie je možné sa prihlásiť")
dieťa.zabiť (0)
# Budem 1, ak sa ssh dokáže pripojiť, ale terminál nie je nastavený
elif i == 1:
tlač ('Pripojené úspešne.\ nTerminálny typ nie je nastavený.")
dieťa.sendline ('vt100')
dieťa.očakávať ('[# \ $]')
# Budem 2, ak je ssh schopný pripojiť sa a terminál je nastavený
elif i == 2:
tlač ('Pripojené úspešne.")
výzva = dieťa.po
print ('Príkazový riadok Shell:', výzva.dekódovať ("utf-8"))

Výkon

Nasledujúci výstup sa objaví, keď sa vyššie uvedený skript vykoná so nesprávnym heslom.

Nasledujúci výstup sa objaví, keď sa vyššie uvedený skript vykoná so správnym heslom.

Záver

pexpect je veľmi užitočný modul pre používateľov Pythonu, ktorý im pomáha pri automatickom vykonávaní ich bežných úloh. Úplné základné použitie modulu pexpect v jazyku Python bolo popísané v tomto návode pomocou jednoduchých príkladov, ktoré používateľom pomôžu začať pracovať s týmto modulom.

Ako zmeniť veľkosť, farbu a schému ukazovateľa myši a kurzora v systéme Windows 10
Ukazovateľ myši a kurzor vo Windows 10 sú veľmi dôležité aspekty operačného systému. Dá sa to povedať aj pre iné operačné systémy, takže v skutočnosti...
Hry Zadarmo a open source herné motory pre vývoj hier pre Linux
Zadarmo a open source herné motory pre vývoj hier pre Linux
Tento článok sa bude zaoberať zoznamom bezplatných a otvorených herných nástrojov, ktoré možno použiť na vývoj 2D a 3D hier v systéme Linux. Existuje ...
Hry Výukový program Shadow of the Tomb Raider pre Linux
Výukový program Shadow of the Tomb Raider pre Linux
Shadow of the Tomb Raider je dvanásty prírastok do série Tomb Raider - franšíza akčných adventúr vytvorená Eidosom Montrealom. Túto hru prijali kritic...