Python

Pexpecti kasutamine Pythonis

Pexpecti kasutamine Pythonis

pilk on populaarne Pythoni moodul erinevat tüüpi automatiseeritud toimingute tegemiseks. Erinevat tüüpi interaktiivsed rakendused nagu telnet, ssh, ftp jne., saab selle mooduli abil automatiseerida. See on puhas Pythoni moodul ja see ei vaja C-kompilaatorit ega TCL-i ega Expecti laiendusi nagu teised eeldavad mooduleid. See võib töötada lihtsalt, kasutades ainult Pythoni tõlki.  Seda moodulit saab kasutada kahel viisil. Üks võimalus on kasutada jooksma () funktsioon ja teine ​​viis on kasutada kudema klass. The jooksma () funktsiooni on lihtne kasutada kui kudemisklass ja täidab automatiseeritud ülesandeid kiiresti. Konkreetset käsku või programmi saab käivitada jooksma () funktsioon, mis tagastab väljundi. Seda funktsiooni saab kasutada alternatiivina funktsioonile os.süsteem () funktsioon. The kudema klass on võimsam kui jooksma () funktsioon, mis võib luua lapseprogrammi, suhelda sellega sisendit saates ja vastust oodata. See moodul on vaikimisi installitud python3-sse. Selles õpetuses on näidatud kaks mooduli kasutamise viisi.

Run () funktsiooni kasutamine

Süntaks:

Süntaks jooksma () funktsioon on toodud allpool.  Sellel on palju argumente erinevatel eesmärkidel. Kuid enamasti kasutatakse esimest 3 või 4 argumenti. Selle funktsiooni esimene argument on kohustuslik, mis võtab käsu, mida see funktsioon täidab. See võib tagastada mitu väljundit. Kui koos väljumisega argumenti kasutatakse koos Vale väärtus, tagastab see ainult käsu väljundi.

run (käsk, timeout = 30, withexitstatus = False, sündmused = Puudub, extra_args = Puudub, logifail = Puudub, cwd = Puudub, env = Puudub, ** kwargs)

Näide 1: run () funktsiooni erinevad kasutusalad

Programmi kolm erinevat kasutamist jooksma () funktsioon on näidatud järgmises skriptis. "pwd'käsu väljund täidetakse esimeses jooksma () funktsioon, mis kuvab praeguse töökataloogi tee. Järgmine jooksma () funktsiooni kasutatakse konkreetse faili üksikasjade määramiseks ja failinimi võetakse kasutajalt. Kolmas jooksma () funktsiooni kasutatakse ssh ühenduse ja hankige kõik failid ja kaustad võrk kausta.

# Impordi pexpecti moodul
impordi pilk
impordi os
# Käivita lihtne käsk
print ("Praegune töökataloog: \ n% s"% pexpect.run ('pwd').dekodeerida ("utf-8"))
# Too konkreetse faili teave
failinimi = input ("Sisestage olemasolev failinimi:")
# Kontrollige, kas fail on olemas või mitte
kui os.tee.olemas (failinimi):
väljund = vaatenurk.run ("ls -l" + failinimi, withexitstatus = 0)
print ("Teave konkreetse faili kohta: \ n% s"% väljund.dekodeerida ("utf-8"))
muu:
print ("Faili pole olemas.")
# Too konkreetse kataloogi failid ja kaust käsuga ssh
väljund = vaatenurk.run ("ssh [meiliga kaitstud] 'ls web /'", sündmused = '(?i) parool ':' 12345 \ n ')
print ("\ nSsh käsu väljund: \ n% s"% väljund.dekodeerida ("utf-8"))

Väljund

Pärast ülaltoodud skripti käivitamist ilmub järgmine väljund. Väljundis, doc1.py on failinimena andnud ja selle faili üksikasjad on näidatud. Järgmisena loend kõigist failidest võrk kaust on kuvatud ssh ühendus.

Kudemisklassi kasutamine

Kudemisklassi süntaks on toodud allpool. Selle klassi konstruktor võib võtta palju argumente mitmel eesmärgil. Esimene argument on kohustuslik, mis võtab käsu täitmiseks.

klassi kudema __init __ (ise, käsk, args = [], ajalõpp = 30, maxread = 2000, otsinguakna suurus = puudub, logifail = puudub, cwd = puudub, env = pole)

Näide 2: kudeklassi lihtne kasutamine

Kudemisklassi lihtne kasutamine on näidatud järgmises skriptis. "kuupäev'käsk on siin täidetud spawn klassi abil. Käsu väljund leitakse kudeklassi objekti loomisega ja väljund prinditakse inimesele loetavas vormingus, kasutades dekodeerida () meetod.

# Impordi pexpecti moodul
impordi pilk
# Käivitage kuupäeva käsk kudemise abil
laps = pilk.kudema ('kuupäev')
# Lugege lapse väljundit ilma EOF-i genereerimata
laps.ootama (pilk.EOF)
# Salvesta tekst, mida stringi muster eeldab
väljund = laps.enne
# Printige väljund
print ("Täna on:", väljund.dekodeerida ("utf-8"))

Väljund

Pärast ülaltoodud skripti käivitamist ilmub järgmine väljund.

Näide 3: loe kataloogi sisu ssh-ühenduse abil

SSH-ühenduse loomine ja konkreetse kataloogi kõigi failide ja kaustade loendi lugemine on näidatud järgmises skriptis.  Siin võetakse määratletud kasutaja parool kasutajalt ssh-ühenduse loomiseks spawn-klassi abil. Kui antud parool on vale, lõpetatakse skript, kuvades veateate.  Kui antud parool on õige, kuid terminal pole määratletud, näitab skript ühenduse edukat teadet, saadab terminali tüübi ja määrab käsuviiba eeldatava mustri. Kui parool on õige ja terminal on määratletud, näitab skript edukat teadet ja shellikäsku.

# Impordi pexpecti moodul
impordi pilk
# Määrake ssh-ühenduse kasutajanimi
kasutajanimi = '[email email protected]'
# Võtke kasutajalt kehtiv parool
Parool = sisestus ("Sisestage% s sisselogimisparool:"% kasutajanimi)
# Käivitage ssh käsk kudemise abil
laps = pilk.kudema ('ssh' + kasutajanimi)
# Oodake parooli
laps.oodata ('parool:')
# Saada kasutajalt võetud parool
laps.saateliin (parool)
# Eeldatav kolm väljundit
i = laps.oodata (['Luba keelatud', 'Terminali tüüp', '[# \ $]'])
# i saab 0, kui ssh ei saa ühendust
kui i == 0:
print ("Host keelas loa. Sisselogimine nurjus ")
laps.tapma (0)
# i saab 1, kui ssh suudab ühenduse luua, kuid terminali pole määratud
elif i == 1:
print ('Ühendamine õnnestus.\ nTerminali tüüp pole määratud.')
laps.saateliin ('vt100')
laps.oodata ('[# \ $]')
# i saab 2, kui ssh suudab ühenduse luua ja terminal on seatud
elif i == 2:
print ('Ühendamine õnnestus.')
viip = laps.pärast
print ('Shelli käsuviip:', viip.dekodeerida ("utf-8"))

Väljund

Kui ülaltoodud skript käivitatakse vale parooliga, kuvatakse järgmine väljund.

Järgmine väljund ilmub siis, kui ülaltoodud skript on käivitatud õige parooliga.

Järeldus

pexpect on Pythoni kasutajate jaoks väga kasulik moodul, mis aitab neil tavapäraseid toiminguid automaatselt teha. Selles õpetuses on kirjeldatud Pythoni pexpect-mooduli põhilisi kasutusviise, kasutades lihtsaid näiteid, mis aitavad kasutajatel selle mooduliga töötama hakata.

5 parimat arkaadmängu Linuxile
Tänapäeval on arvutid tõsised mängimiseks kasutatavad masinad. Kui te ei saa uut rekordit, teate, mida ma mõtlen. Selles postituses saate teada mõnda ...
Lahing Wesnothi eest 1.13.6 Areng vabastati
Lahing Wesnothi eest 1.13.6 ilmus eelmisel kuul, on 1-s kuues arendusversioon.13.x-seeria ja see pakub mitmeid täiustusi, eelkõige kasutajaliidese ja ...
League of Legendsi installimine Ubuntu 14-le.04
Kui olete League of Legends fänn, siis on see teile võimalus proovida League of Legendsit. Pange tähele, et LOL-i toetab PlayOnLinux, kui olete Linuxi...