Hvordan du bruker pexpect i python

Hvordan du bruker pexpect i python

Pexpect er en populær Python -modul for å gjøre forskjellige typer automatiserte oppgaver. Ulike typer interaktive applikasjoner som Telnet, SSH, FTP, etc., kan automatiseres ved hjelp av denne modulen. Det er en ren Python -modul, og den krever ikke en C -kompilator eller TCL eller forventer utvidelser som andre forventer moduler. Det kan fungere enkelt ved å bruke en Python -tolk. Denne modulen kan brukes på to måter. En måte er å bruke løpe() funksjon, og en annen måte er å bruke gyte klasse. De løpe() Funksjon er enkel å bruke enn Spawn -klassen og utfører de automatiserte oppgavene raskt. Den spesielle kommandoen eller et program kan utføres av løpe() funksjon som returnerer utdataene. Denne funksjonen kan brukes som alternativ til OS.system() funksjon. De gyte Klasse er kraftigere enn løpe() Funksjon som kan gyte et barneprogram, samhandle med det ved å sende input og vente på svaret. Denne modulen er installert i Python3 som standard. De to måtene å bruke denne modulen har vist i denne opplæringen.

Bruke Run () -funksjon

Syntaks:

Syntaksen til løpe() Funksjon er gitt nedenfor. Det har mange argumenter for forskjellige formål. Men de første 3 eller 4 argumentene brukes stort sett. Det første argumentet for denne funksjonen er obligatorisk som tar kommandoen om at denne funksjonen vil utføre. Det kan returnere flere utganger. Hvis WithExitStatus Argument brukes med Falsk Verdi, den vil bare returnere kommandoens utdata.

Kjør (kommando, timeout = 30, withExitStatus = falsk, hendelser = ingen, ekstra_args = ingen, logfile = ingen, cwd = ingen, env = ingen, ** kwargs)

Eksempel-1: Ulike bruksområder for RUN () -funksjonen

Tre forskjellige bruksområder av løpe() Funksjon har vist i følgende skript. 'PWD'Kommandos utgang utføres i den første løpe() Funksjon som vil vise den gjeldende arbeidskatalogstien. Neste, The løpe() Funksjon brukes til å bestemme detaljene i en bestemt fil, og filnavnet vil bli tatt fra brukeren. Den tredje løpe() funksjon brukes til å lage ssh tilkoble og hente alle filer og mapper fra Web mappe.

# Importer Pexpect -modul
Importer pexpect
Importer OS
# Kjør enkel kommando
Print ("Den gjeldende arbeidskatalogen: \ n %s" %Pexpect.Kjør ('PWD').Dekode ("UTF-8"))
# Hent informasjonen til en bestemt fil
filnavn = input ("Angi et eksisterende filnavn:")
# Sjekk filen eksisterer eller ikke
Hvis OS.sti.eksisterer (filnavn):
output = pexpect.Kjør ("LS -L"+filnavn, WithExitStatus = 0)
Skriv ut ("Informasjon om en bestemt fil: \ n %s" %output.Dekode ("UTF-8"))
ellers:
Print ("Filen eksisterer ikke.")
# Hent filene og mappen til en bestemt katalog ved hjelp av SSH -kommandoen
output = pexpect.Kjør ("Ssh Fahmida@localhost 'ls web/'", hendelser = '(?i) passord ':' 12345 \ n ')
Skriv ut ("\ n Utgangen til SSH -kommandoen: \ n %s" %utgang.Dekode ("UTF-8"))

Produksjon

Følgende utgang vises etter å ha utført skriptet ovenfor. I utgangen, Doc1.py har gitt som filnavnet, og detaljene i denne filen har vist. Deretter, listen over alle filer i Web Mappen har vist ved hjelp av ssh forbindelse.

Ved hjelp av gyteklasse

Syntaksen til Spawn -klassen er gitt nedenfor. Konstruktøren av denne klassen kan ta mange argumenter for mange formål. Det første argumentet er obligatorisk som vil ta kommandoen for utførelse.

Klasse gyte __init __ (selv, kommando, args = [], timeout = 30, maxRead = 2000, søk vindusstørrelse = ingen, logfile = ingen, cwd = ingen, env = ingen)

Eksempel-2: Enkel bruk av Spawn Class

Den enkle bruken av Spawn -klassen har vist i følgende skript. 'Dato'Kommando er utført her ved å bruke Spawn -klassen. Utgangen fra kommandoen vil bli hentet ved å opprette gjenstanden for Spawn-klassen, og utgangen skrives ut i menneskelig lesbart format ved å bruke dekode() metode.

# Importer Pexpect -modul
Importer pexpect
# Kjør datakommandoen ved hjelp av Spawn
barn = pexpect.gyte ('date')
# Les barneproduksjonen uten å generere EOF
barn.Forvent (pexpect.Eof)
# Lagre teksten som forventes av strengmønsteret
output = barn.før
# Skriv ut utgangen
trykk ("I dag er:", output.Dekode ("UTF-8"))

Produksjon

Følgende utgang vises etter å ha utført skriptet ovenfor.

Eksempel-3: Les innholdet i katalogen ved hjelp av SSH-tilkobling

Opprette SSH -tilkobling og lese listen over alle filer og mapper i en bestemt katalog har vist i følgende skript. Her vil passordet til den definerte brukeren bli hentet fra brukeren for å lage SSH -tilkobling ved hjelp av Spawn -klassen. Hvis det gitte passordet er feil, blir skriptet avsluttet ved å vise en feilmelding. Hvis det gitte passordet er riktig, men terminalen ikke er definert, vil skriptet vise suksessmeldingen for tilkoblingen, sende terminaltypen og definere kommandokortets forventede mønster. Hvis passordet er riktig og terminalen er definert, vil skriptet vise suksessmeldingen og Shell -kommando -ledeteksten.

# Importer Pexpect -modul
Importer pexpect
# Angi brukernavnet for SSH -tilkobling
brukernavn = 'fahmida@localhost'
# Ta et gyldig passord fra brukeren
Passord = input ("Skriv inn påloggingspassordet til %s:" %brukernavn)
# Kjør SSH -kommando ved hjelp av Spawn
barn = pexpect.gyte ('ssh' + brukernavn)
# Vent på passordet
barn.Forvent ('Passord:')
# Send passordet hentet fra brukeren
barn.Sendline (passord)
# Forventet tre utgang
i = barn.Forvent (['Tillatelse nektet', 'Terminal type', '[#\ $]'])
# Jeg vil være 0 hvis SSH ikke klarer å koble til
Hvis i == 0:
trykk ("Tillatelse nektet av verten. Klarte ikke å logge inn")
barn.Kill (0)
# Jeg vil være 1 hvis SSH er i stand til å koble til, men terminalen ikke er angitt
elif i == 1:
trykk ('tilkoblet vellykket.\ nterminal type er ikke angitt.')
barn.Sendline ('VT100')
barn.Forvent ('[#\ $]')
# Jeg vil være 2 hvis SSH er i stand til å koble til og terminalen er satt
elif i == 2:
trykk ('tilkoblet vellykket.')
spør = barn.etter
Skriv ut ('Shell Command Prompt:', hurtig.Dekode ("UTF-8"))

Produksjon

Følgende utdata vises når skriptet ovenfor utføres med feil passord.

Følgende utdata vises når skriptet ovenfor utføres med riktig passord.

Konklusjon

Pexpect er en veldig nyttig modul for Python -brukere som hjelper dem å gjøre sine vanlige oppgaver automatisk. Den helt grunnleggende bruken av Pexpect -modulen til Python er beskrevet i denne opplæringen ved å bruke enkle eksempler for å hjelpe brukerne til å begynne å jobbe med denne modulen.