Python

Sådan bruges pexpect i Python

Sådan bruges pexpect i Python

pexpect er et populært Python-modul til at udføre forskellige typer automatiserede opgaver. Forskellige typer interaktive applikationer såsom telnet, ssh, ftp osv., kan automatiseres ved hjælp af dette modul. Det er et rent Python-modul, og det kræver ikke en C-compiler eller TCL eller Expect-udvidelser som andre forventer moduler. Det kan kun fungere ved kun at bruge en Python-tolk.  Dette modul kan bruges på to måder. En måde er at bruge løb() funktion, og en anden måde er at bruge gyde klasse. Det løb() funktionen er nem at bruge end spawn-klassen og udfører de automatiserede opgaver hurtigt. Den bestemte kommando eller et program kan udføres af løb() funktion, der returnerer output. Denne funktion kan bruges som alternativ til os.system() fungere. Det gyde klasse er stærkere end løb() funktion, der kan gyde et barneprogram, interagere med det ved at sende input og vente på svaret. Dette modul er som standard installeret i python3. De to måder at bruge dette modul på er vist i denne vejledning.

Brug af funktionen run ()

Syntaks:

Syntaksen for løb() funktionen er angivet nedenfor.  Det har mange argumenter til forskellige formål. Men de første 3 eller 4 argumenter bruges mest. Det første argument for denne funktion er obligatorisk, der tager kommandoen, som denne funktion vil udføre. Det kan returnere flere udgange. Hvis den withexitstatus argument bruges med Falsk værdi, returnerer den kun kommandoens output.

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

Eksempel-1: Forskellige anvendelser af funktionen run ()

Tre forskellige anvendelser af løb() funktion er vist i det følgende script. Det 'pwdkommandos output udføres i den første løb() -funktion, der viser den aktuelle sti til arbejdsmappen. Dernæst løb() funktion bruges til at bestemme detaljerne i en bestemt fil, og filnavnet tages fra brugeren. Den tredje løb() funktion bruges til at fremstille ssh forbindelse og hente alle filer og mapper fra web folder.

# Importer pexpect-modul
importer pexpect
importer os
# Kør simpel kommando
print ("Den aktuelle arbejdsmappe: \ n% s"% pexpect.kør ('pwd').afkode ("utf-8"))
# Hent oplysningerne om en bestemt fil
filnavn = input ("Indtast et eksisterende filnavn:")
# Kontroller, at filen findes eller ikke
hvis os.sti.findes (filnavn):
output = pexpect.kør ("ls -l" + filnavn, medexitstatus = 0)
print ("Information om en bestemt fil: \ n% s"% output.afkode ("utf-8"))
andet:
print ("Filen findes ikke.")
# Hent filerne og mappen til et bestemt bibliotek ved hjælp af ssh-kommandoen
output = pexpect.run ("ssh [email protected] 'ls web /'", events = '(?i) adgangskode ':' 12345 \ n ')
print ("\ n Output af ssh-kommando: \ n% s"% output.afkode ("utf-8"))

Produktion

Følgende output vises efter udførelse af ovenstående script. I output, doc1.py har givet som filnavn, og detaljerne i denne fil har vist. Derefter listen over alle filer i web mappen vises med ssh forbindelse.

Brug af spawn-klasse

Syntaksen for spawn-klassen er angivet nedenfor. Konstruktøren af ​​denne klasse kan tage mange argumenter til mange formål. Det første argument er obligatorisk, der tager kommandoen til udførelse.

klasse spawn __init __ (selv, kommando, args = [], timeout = 30, maxread = 2000, søgevinduets størrelse = ingen, logfil = ingen, cwd = ingen, env = ingen)

Eksempel 2: Enkel brug af spawn-klasse

Den enkle brug af spawn-klassen er vist i det følgende script. Det 'dato'kommandoen er blevet udført her ved hjælp af spawn-klassen. Outputtet af kommandoen hentes ved at oprette objektet i spawn-klassen, og outputen udskrives i menneskeligt læsbart format ved hjælp af afkode () metode.

# Importer pexpect-modul
importer pexpect
# Kør datokommandoen ved hjælp af spawn
barn = pexpect.gyde ('date')
# Læs underordnet output uden at generere EOF
barn.forvent (pexpect.EOF)
# Gem den tekst, der forventes af strengmønsteret
output = barn.Før
# Udskriv output
print ("I dag er:", output.afkode ("utf-8"))

Produktion

Følgende output vises efter udførelse af ovenstående script.

Eksempel 3: Læs indholdet af biblioteket ved hjælp af ssh-forbindelse

Oprettelse af ssh-forbindelse og læsning af listen over alle filer og mapper i et bestemt bibliotek er vist i det følgende script.  Her vil adgangskoden til den definerede bruger blive taget fra brugeren for at oprette ssh-forbindelse ved hjælp af spawn-klassen. Hvis den givne adgangskode er forkert, afsluttes scriptet ved at vise en fejlmeddelelse.  Hvis den givne adgangskode er korrekt, men terminalen ikke er defineret, viser scriptet succesmeddelelsen for forbindelsen, sender terminaltypen og definerer kommandopromptens forventede mønster. Hvis adgangskoden er korrekt, og terminalen er defineret, viser scriptet succesmeddelelsen og shell-kommandoprompten.

# Importer pexpect-modul
importer pexpect
# Indstil brugernavnet til ssh-forbindelse
brugernavn = '[email protected]'
# Tag en gyldig adgangskode fra brugeren
Adgangskode = input ("Indtast login-adgangskoden til% s:"% brugernavn)
# Kør kommandoen ssh ved hjælp af spawn
barn = pexpect.spawn ('ssh' + brugernavn)
# Vent på adgangskoden
barn.forvent ('password:')
# Send adgangskoden fra brugeren
barn.sendline (adgangskode)
# Forventet tre output
jeg = barn.forvent (['Tilladelse nægtet', 'Terminal type', '[# \ $]'])
# jeg vil være 0, hvis ssh ikke kan oprette forbindelse
hvis jeg == 0:
print ("Tilladelse nægtet af værten. Kan ikke logge ind ")
barn.dræbe (0)
# jeg vil være 1, hvis ssh er i stand til at oprette forbindelse, men terminal ikke er indstillet
elif i == 1:
udskrive ('Forbundet med succes.\ nTerminal type er ikke indstillet.')
barn.sendline ('vt100')
barn.forvent ('[# \ $]')
# jeg vil være 2, hvis ssh er i stand til at oprette forbindelse, og terminalen er indstillet
elif i == 2:
print ('Forbundet med succes.')
hurtig = barn.efter
print ('Shell Command Prompt:', prompt.afkode ("utf-8"))

Produktion

Følgende output vises, når ovenstående script udføres med den forkerte adgangskode.

Følgende output vises, når ovenstående script udføres med den korrekte adgangskode.

Konklusion

pexpect er et meget nyttigt modul til Python-brugere, der hjælper dem med at udføre deres normale opgaver automatisk. De meget grundlæggende anvendelser af pexpect-modulet i Python er beskrevet i denne vejledning ved hjælp af nemme eksempler til at hjælpe brugerne med at begynde at arbejde med dette modul.

Sådan registreres og streames din gaming-session på Linux
Tidligere blev spil kun betragtet som en hobby, men med tiden oplevede spilindustrien en enorm vækst med hensyn til teknologi og antallet af spillere....
Bedste spil at spille med håndsporing
Oculus Quest introducerede for nylig den gode idé om håndsporing uden controllere. Med et stadigt stigende antal spil og aktiviteter, der udfører supp...
Sådan vises OSD-overlay i fuldskærms Linux-apps og -spil
Afspilning af fuldskærmsspil eller brug af apps i distraktionsfri fuldskærmstilstand kan afskære dig fra relevante systemoplysninger, der er synlige i...