Python

Kā izmantot pexpect Python

Kā izmantot pexpect Python

ieskats ir populārs Python modulis dažādu veidu automatizētu uzdevumu veikšanai. Dažāda veida interaktīvas lietojumprogrammas, piemēram, telnet, ssh, ftp utt., var automatizēt, izmantojot šo moduli. Tas ir tīrs Python modulis, un tam nav nepieciešams C kompilators vai TCL, vai Expect paplašinājumi, tāpat kā citi sagaida moduļus. Tas var viegli darboties, izmantojot tikai Python tulku.  Šo moduli var izmantot divos veidos. Viens no veidiem ir izmantot palaist () funkciju, un vēl viens veids ir izmantot nārstot klasē. The palaist () funkciju ir viegli izmantot nekā nārstošanas klasi, un tā ātri veic automatizētos uzdevumus. Konkrēto komandu vai programmu var izpildīt palaist () funkcija, kas atgriež izvadi. Šo funkciju var izmantot kā alternatīvu os.sistēma () funkciju. The nārstot klase ir jaudīgāka par palaist () funkcija, kas var radīt bērnu programmu, mijiedarboties ar to, nosūtot ievadi un gaidot atbildi. Šis modulis pēc noklusējuma ir instalēts python3. Šajā apmācībā ir parādīti divi šī moduļa izmantošanas veidi.

Izmantojot run () funkciju

Sintakse:

Sintakse palaist () funkcija ir dota zemāk.  Tam ir daudz argumentu dažādiem mērķiem. Bet galvenokārt tiek izmantoti pirmie 3 vai 4 argumenti. Pirmais šīs funkcijas arguments ir obligāts, kas prasa komandu, kuru šī funkcija izpildīs. Tas var atgriezt vairākas izejas. Ja withexitstatus arguments tiek izmantots ar Nepatiesa vērtību, tā atgriezīs tikai komandas izvadi.

palaist (komanda, taimauts = 30, withexitstatus = False, notikumi = nav, extra_args = nav, logfile = nav, cwd = nav, env = nav, ** kwargs)

1. piemērs: Run () funkcijas dažādi izmantošanas veidi

Trīs dažādi palaist () funkcija ir parādīta šajā skriptā. The 'pwd'komandas izvads tiek izpildīts pirmajā palaist () funkcija, kas parādīs pašreizējo darba direktorijas ceļu. Tālāk palaist () Funkcija tiek izmantota, lai noteiktu konkrēta faila detaļas, un faila nosaukums tiks ņemts no lietotāja. Trešais palaist () funkciju izmanto, lai izveidotu ssh savienojumu un izgūstiet visus failus un mapes no tīmeklī mapi.

# Importēt pexpect moduli
importēt skatījumu
importēt os
# Palaidiet vienkāršu komandu
print ("Pašreizējais darba direktorijs: \ n% s"% pexpect.palaist ('pwd').atšifrēt ("utf-8"))
# Iegūstiet informāciju par konkrētu failu
filename = input ("Ievadiet esošu faila nosaukumu:")
# Pārbaudiet, vai fails pastāv vai nav
ja os.ceļš.pastāv (faila nosaukums):
izeja = skatījums.palaist ("ls -l" + faila nosaukums, withexitstatus = 0)
print ("Informācija par konkrētu failu: \ n% s"% izvade.atšifrēt ("utf-8"))
cits:
print ("Fails neeksistē.")
# Ielādējiet konkrētā direktorija failus un mapes, izmantojot komandu ssh
izeja = skatījums.palaist ("ssh [email protected] 'ls web /'", events = '(?i) parole ':' 12345 \ n ')
print ("\ nKomandas ssh izvade: \ n% s"% izvade.atšifrēt ("utf-8"))

Rezultāts

Pēc iepriekš minētā skripta izpildes parādīsies šāda izeja. Izejā, doc1.py ir norādījis kā faila nosaukumu, un ir parādīta šī faila informācija. Pēc tam visu failu saraksts tīmeklī mape ir parādīta, izmantojot ssh savienojums.

Nārsta klases izmantošana

Nārstošanas klases sintakse ir dota zemāk. Šīs klases konstruktors var izmantot daudz argumentu daudziem mērķiem. Pirmais arguments ir obligāts, kas prasīs komandu izpildei.

klases nārsts __init __ (self, komanda, args = [], taimauts = 30, maxread = 2000, meklēšanas loga izmērs = nav, logfile = nav, cwd = nav, env = nav)

2. piemērs: nārstošanas klases vienkārša izmantošana

Nārstošanas klases vienkāršā izmantošana ir parādīta šajā skriptā. The 'datums'komanda šeit ir izpildīta, izmantojot nārstošanas klasi. Komandas izvads tiks iegūts, izveidojot nārstošanas klases objektu, un izeja tiek izdrukāta cilvēkiem lasāmā formātā, izmantojot atšifrēt () metodi.

# Importēt pexpect moduli
importēt skatījumu
# Palaidiet datuma komandu, izmantojot nārstu
bērns = skatījums.nārstot (“datums”)
# Izlasiet bērna izvadi, neradot EOF
bērns.sagaidīt (apskatīt.EOF)
# Saglabājiet tekstu, ko paredz virknes modelis
izeja = bērns.pirms
# Izdrukājiet izvadi
print ("Šodien ir:", izeja.atšifrēt ("utf-8"))

Rezultāts

Pēc iepriekš minētā skripta izpildes parādīsies šāda izeja.

3. piemērs: lasiet direktorijas saturu, izmantojot ssh savienojumu

Ssh savienojuma izveide un visu konkrētā direktorija failu un mapju saraksta lasīšana ir parādīta šajā skriptā.  Šeit definētā lietotāja parole tiks ņemta no lietotāja, lai izveidotu ssh savienojumu, izmantojot nārstošanas klasi. Ja norādītā parole nav pareiza, skripts tiks pārtraukts, parādot kļūdas ziņojumu.  Ja norādītā parole ir pareiza, bet termināls nav definēts, skripts parādīs savienojuma veiksmes ziņojumu, nosūtīs termināla tipu un definēs komandrindas paredzamo modeli. Ja parole ir pareiza un termināls ir definēts, skripts parādīs veiksmes ziņojumu un čaulas komandu uzvedni.

# Importēt pexpect moduli
importēt skatījumu
# Iestatiet ssh savienojuma lietotājvārdu
lietotājvārds = '[e-pasts aizsargāts]'
# Paņemiet no lietotāja derīgu paroli
Parole = ievade ("Ievadiet% s pieteikšanās paroli:"% lietotājvārds)
# Palaidiet komandu ssh, izmantojot nārstu
bērns = skatījums.nārstot ('ssh' + lietotājvārds)
# Pagaidiet paroli
bērns.sagaidīt ('parole:')
# Nosūtiet lietotāja paroli
bērns.sūtīšanas līnija (parole)
# Paredzētā trīs izlaide
i = bērns.sagaidīt (['Atļauja liegta', 'Termināla tips', '[# \ $]'])
# i būs 0, ja ssh nevar izveidot savienojumu
ja i == 0:
drukāt ("Saimnieks atteica atļauju. Nevar pieteikties ")
bērns.nogalināt (0)
# i būs 1, ja ssh varēs izveidot savienojumu, bet termināls nav iestatīts
elif i == 1:
print ('Savienojums veiksmīgi izveidots.\ nTermināla tips nav iestatīts.')
bērns.sūtīšanas līnija ('vt100')
bērns.sagaidīt ('[# \ $]')
# i būs 2, ja ssh varēs izveidot savienojumu un termināls ir iestatīts
elif i == 2:
print ('Savienojums veiksmīgi izveidots.')
uzvedne = bērns.pēc
drukāt ('Shell Command Prompt:', uzvedne.atšifrēt ("utf-8"))

Rezultāts

Kad iepriekšējais skripts tiks izpildīts ar nepareizu paroli, parādīsies šāda izeja.

Kad iepriekšējais skripts tiks izpildīts ar pareizu paroli, parādīsies šāda izeja.

Secinājums

pexpect ir ļoti noderīgs modulis Python lietotājiem, kas palīdz viņiem regulāri veikt savus regulāros uzdevumus. Šajā apmācībā ir aprakstīti Python pexpect moduļa pamatlietojumi, izmantojot vienkāršus piemērus, lai palīdzētu lietotājiem sākt strādāt ar šo moduli.

Kā tvert un straumēt spēļu sesiju operētājsistēmā Linux
Agrāk spēļu spēlēšana tika uzskatīta tikai par hobiju, taču laika gaitā spēļu industrija piedzīvoja milzīgu tehnoloģiju un spēlētāju skaita pieaugumu....
Labākās spēles, ko spēlēt ar rokas izsekošanu
Oculus Quest nesen iepazīstināja ar lielisku ideju par rokas izsekošanu bez kontrolieriem. Ar arvien lielāku spēļu un aktivitāšu skaitu, kas atbalsta ...
Kā parādīt OSD pārklājumu pilnekrāna Linux lietotnēs un spēlēs
Spēlējot pilnekrāna spēles vai lietojot lietotnes bez atrautības pilnekrāna režīmā, jūs varat izslēgt no attiecīgās sistēmas informācijas, kas redzama...