Piton

Kako koristiti pexpect u Pythonu

Kako koristiti pexpect u Pythonu

pexpect je popularan Python modul za obavljanje različitih vrsta automatiziranih zadataka. Različite vrste interaktivnih aplikacija kao što su telnet, ssh, ftp itd., može se automatizirati pomoću ovog modula. To je čisti Python modul i ne zahtijeva C kompajler ili TCL ili Expect proširenja kao što drugi očekuju module. To može lako raditi samo pomoću Python interpretera.  Ovaj se modul može koristiti na dva načina. Jedan od načina je korištenje trčanje() funkcija, a drugi način je upotreba mrijesti se razred. The trčanje() funkcija je jednostavna za upotrebu od klase mrijesta i brzo izvršava automatizirane zadatke. Određenu naredbu ili program može izvršiti trčanje() funkcija koja vraća izlaz. Ova se funkcija može koristiti kao alternativa os.sustav() funkcija. The mrijesti se klasa je moćnija od trčanje() funkcija koja može iznjedriti podređeni program, komunicirati s njim slanjem unosa i čekajući odgovor. Ovaj je modul po defaultu instaliran u python3. Dva su načina korištenja ovog modula prikazana u ovom vodiču.

Korištenje funkcije run ()

Sintaksa:

Sintaksa trčanje() funkcija je dana u nastavku.  Ima mnogo argumenata u razne svrhe. Ali uglavnom se koriste prva 3 ili 4 argumenta. Prvi je argument ove funkcije obvezan koji uzima naredbu koju će izvršiti ova funkcija. Može vratiti više izlaza. Ako je shexitstatusom argument se koristi s Lažno vrijednost, vratit će samo izlaz naredbe.

trčanje (naredba, timeout = 30, withexitstatus = False, događaji = None, extra_args = None, logfile = None, cwd = None, env = None, ** kwargs)

Primjer-1: Različite upotrebe funkcije run ()

Tri različite upotrebe trčanje() funkcije prikazane su u sljedećoj skripti. "pwd'Izlaz naredbe izvršava se u prvom trčanje() funkcija koja će prikazati trenutnu putanju radnog direktorija. Dalje, trčanje() funkcija koristi se za određivanje pojedinosti određene datoteke, a naziv datoteke preuzet će od korisnika. Treći trčanje() funkcija koristi se za izradu ssh vezu i dohvatite sve datoteke i mape s mreža mapu.

# Uvezi modul pexpect
uvoz pexpect
uvoz os
# Pokrenite jednostavnu naredbu
print ("Trenutni radni direktorij: \ n% s"% pexpect.pokreni ('pwd').dekodiraj ("utf-8"))
# Dohvatite podatke o određenoj datoteci
filename = input ("Unesite postojeći naziv datoteke:")
# Provjerite postoji li datoteka ili ne
ako je os.staza.postoji (naziv datoteke):
izlaz = pexpect.pokrenite ("ls -l" + naziv datoteke, withexitstatus = 0)
print ("Podaci o određenoj datoteci: \ n% s"% izlaz.dekodiraj ("utf-8"))
drugo:
print ("Datoteka ne postoji.")
# Dohvatite datoteke i mape određenog direktorija pomoću naredbe ssh
izlaz = pexpect.run ("ssh [e-mail zaštićen] 'ls web /'", događaji = '(?i) lozinka ':' 12345 \ n ')
print ("\ nIzlaz naredbe ssh: \ n% s"% izlaz.dekodiraj ("utf-8"))

Izlaz

Sljedeći će se izlaz pojaviti nakon izvršavanja gornje skripte. U izlazu, doc1.py je dao kao naziv datoteke, a prikazani su detalji ove datoteke. Dalje, popis svih datoteka mreža mapa prikazana pomoću ssh povezanost.

Korištenje klase mrijesta

Sintaksa klase mrijesta data je u nastavku. Konstruktor ove klase može uzeti mnoge argumente u mnoge svrhe. Prvi je argument obavezan koji će naredbu uzeti na izvršenje.

spawn klase __init __ (self, command, args = [], timeout = 30, maxread = 2000, veličina prozora za pretraživanje = none, logfile = none, cwd = none, env = none)

Primjer-2: Jednostavna uporaba klase mrijesta

Jednostavna uporaba klase spawn prikazana je u sljedećoj skripti. "datumOvdje je izvršena naredba pomoću klase spawn. Izlaz naredbe dobit će se stvaranjem objekta klase spawn, a izlaz će se ispisati u čitljivom formatu pomoću dekodiraj () metoda.

# Uvezi modul pexpect
uvoz pexpect
# Izvedite naredbu date koristeći spawn
dijete = pexpect.mrijest ('datum')
# Očitavanje podređenih rezultata bez generiranja EOF-a
dijete.očekivati ​​(pexpect.EOF)
# Spremite tekst koji očekuje uzorak niza
izlaz = dijete.prije
# Ispis rezultata
print ("Danas je:", izlaz.dekodiraj ("utf-8"))

Izlaz

Sljedeći će se izlaz pojaviti nakon izvršavanja gornje skripte.

Primjer-3: Pročitajte sadržaj direktorija pomoću ssh veze

Stvaranje ssh veze i čitanje popisa svih datoteka i mapa određenog direktorija prikazani su u sljedećoj skripti.  Ovdje će se korisniku preuzeti lozinka definiranog korisnika za uspostavljanje ssh veze pomoću klase spawn. Ako je zadana lozinka netočna, skripta će se prekinuti prikazivanjem poruke pogreške.  Ako je zadana lozinka točna, ali terminal nije definiran, tada će skripta prikazati poruku o uspjehu veze, poslati vrstu terminala i definirati očekivani obrazac naredbenog retka. Ako je lozinka ispravna i terminal definiran, skripta će prikazati poruku o uspjehu i naredbeni redak ljuske.

# Uvezi modul pexpect
uvoz pexpect
# Postavite korisničko ime za ssh vezu
korisničko ime = '[zaštićena e-poštom]'
# Uzmite važeću lozinku od korisnika
Lozinka = unos ("Unesite lozinku za prijavu% s:"% korisničko ime)
# Pokreni ssh naredbu koristeći spawn
dijete = pexpect.spawn ('ssh' + korisničko ime)
# Pričekajte lozinku
dijete.očekivati ​​('lozinka:')
# Pošaljite lozinku preuzetu od korisnika
dijete.pošalji (lozinka)
# Očekivana tri izlaza
i = dijete.očekivati ​​(['Dozvola odbijena', 'Vrsta terminala', '[# \ $]'])
# bit ću 0 ako se ssh ne može povezati
ako je i == 0:
print ("host dozvolu odbio. Nije moguća prijava")
dijete.ubiti (0)
# bit ću 1 ako se ssh može povezati, ali terminal nije postavljen
elif i == 1:
print ('Povezana uspješno.\ nTip terminala nije postavljen.')
dijete.pošalji ('vt100')
dijete.očekivati ​​('[# \ $]')
# bit ću 2 ako se ssh uspije povezati i ako je terminal postavljen
elif i == 2:
print ('Povezana uspješno.')
prompt = dijete.nakon
print ('Naredba naredbe ljuske:', prompt.dekodiraj ("utf-8"))

Izlaz

Sljedeći će se izlaz pojaviti kada se gornja skripta izvrši s pogrešnom lozinkom.

Sljedeći će se izlaz pojaviti kada se gornja skripta izvrši s ispravnom lozinkom.

Zaključak

pexpect je vrlo koristan modul za korisnike Pythona koji im pomaže da automatski izvršavaju svoje redovite zadatke. U ovom su uputstvu opisane vrlo osnovne upotrebe pexpect modula Pythona pomoću jednostavnih primjera koji pomažu korisnicima da počnu raditi s ovim modulom.

10 najboljih igara za igranje na Ubuntuu
Windows platforma bila je jedna od dominantnih platformi za igre zbog ogromnog postotka igara koje se danas razvijaju kako bi podržavale Windows. Može...
5 najboljih arkadnih igara za Linux
U današnje vrijeme računala su ozbiljni strojevi koji se koriste za igre na sreću. Ako ne uspijete dobiti novi visoki rezultat, znat ćete na što misli...
Bitka za Wesnoth 1.13.6 Razvoj objavljen
Bitka za Wesnoth 1.13.6 objavljeno prošlog mjeseca, šesto je razvojno izdanje u izdanju 1.13.x series i donosi niz poboljšanja, ponajviše korisničkog ...