„Python“

Kaip naudoti „pexpect“ „Python“

Kaip naudoti „pexpect“ „Python“

žvilgsnis yra populiarus „Python“ modulis, skirtas atlikti įvairių tipų automatines užduotis. Įvairių tipų interaktyvios programos, tokios kaip telnet, ssh, ftp ir kt., galima automatizuoti naudojant šį modulį. Tai yra grynas „Python“ modulis, kuriam nereikia nei C kompiliatoriaus, nei TCL, nei „Expect“ plėtinių, kaip kiti tikisi modulių. Tai gali lengvai veikti tik naudojant „Python“ vertėją.  Šį modulį galima naudoti dviem būdais. Vienas iš būdų yra naudoti paleisti () funkcija, o kitas būdas yra naudoti neršti klasė. The paleisti () funkciją lengva naudoti nei ikrų klasę ir greitai atlieka automatizuotas užduotis. Konkrečią komandą ar programą gali vykdyti paleisti () funkcija, kuri grąžina išvestį. Ši funkcija gali būti naudojama kaip alternatyva os.sistema () funkcija. The neršti klasė yra galingesnė už paleisti () funkcija, kuri gali sukurti vaiko programą, sąveikauti su ja siunčiant informaciją ir laukiant atsakymo. Šis modulis pagal numatytuosius nustatymus yra įdiegtas python3. Du šio modulio naudojimo būdai parodyti šioje pamokoje.

Naudojant run () funkciją

Sintaksė:

Sintaksė paleisti () funkcija pateikiama žemiau.  Ji turi daug argumentų, susijusių su įvairiais tikslais. Tačiau dažniausiai naudojami pirmieji 3 ar 4 argumentai. Pirmasis šios funkcijos argumentas yra privalomas, reikalaujantis komandos, kurią vykdys ši funkcija. Jis gali grąžinti kelis išėjimus. Jei withexitstatus argumentas naudojamas su Klaidinga reikšmę, ji grąžins tik komandos išvestį.

paleisti (komanda, skirtasis laikas = 30, withexitstatus = False, events = None, extra_args = None, logfile = None, cwd = None, env = None, ** kwargs)

1 pavyzdys: Skirtingi run () funkcijos naudojimo būdai

Trys skirtingi paleisti () funkcijos buvo parodytos šiame scenarijuje. „pwd'komandos išvestis vykdoma pirmajame paleisti () funkcija, kuri parodys dabartinį darbo katalogo kelią. Toliau paleisti () funkcija naudojama nustatyti konkretaus failo detales, o failo vardas bus paimtas iš vartotojo. Trečioji paleisti () funkcija naudojama norint sukurti ssh prisijungti ir gauti visus failus ir aplankus iš internetas aplanką.

# Importuoti „pexpect“ modulį
importuoti žvilgsnį
importuoti os
# Paleiskite paprastą komandą
spausdinti ("Dabartinis darbo katalogas: \ n% s"% pexpect.paleisti („pwd“).iššifruoti („utf-8“))
# Gaukite tam tikro failo informaciją
failo pavadinimas = input ("Įveskite esamą failo pavadinimą:")
# Patikrinkite, ar failas yra, ar ne
jei os.kelias.egzistuoja (failo vardas):
išėjimas = žvilgsnis.paleisti („ls -l“ + failo pavadinimas, withexitstatus = 0)
print ("Informacija apie tam tikrą failą: \ n% s"% išvestis.iššifruoti („utf-8“)
Kitas:
spausdinti ("Failo nėra.")
# Atkurkite konkretaus katalogo failus ir aplankus naudodami komandą ssh
išėjimas = žvilgsnis.paleisti ("ssh [email protected] 'ls web /'", events = '(?i) slaptažodis ':' 12345 \ n ')
print ("\ nSsh komandos išvestis: \ n% s"% išvestis.iššifruoti („utf-8“)

Rezultatas

Ši išvestis pasirodys atlikus pirmiau pateiktą scenarijų. Išvestyje, doc1.py nurodė failo pavadinimą ir parodė išsamią informaciją apie šį failą. Tada pateikiamas visų failų sąrašas internetas aplankas rodomas naudojant ssh ryšį.

Naudojant neršto klasę

Neršto klasės sintaksė pateikta žemiau. Šios klasės konstruktorius gali turėti daug argumentų įvairiais tikslais. Pirmasis argumentas yra privalomas, kuris atliks komandą.

klasės spawn __init __ (savarankiškai, komanda, args = [], skirtasis laikas = 30, maxread = 2000, paieškos lango dydis = nėra, žurnalo failas = nėra, cwd = nėra, env = nėra)

2 pavyzdys: paprastas neršto klasės naudojimas

Paprastas neršto klasės naudojimas parodytas šiame scenarijuje. „data'komanda buvo įvykdyta naudojant neršto klasę. Komandos išvestis bus gauta sukūrus neršto klasės objektą, o išvestis spausdinama žmonėms skaitomu formatu naudojant iššifruoti () metodas.

# Importuoti „pexpect“ modulį
importuoti žvilgsnį
# Vykdykite datos komandą naudodami ikrą
vaikas = žvilgsnis.neršti („data“)
# Perskaitykite vaiko išvestį negeneruodami EOF
vaikas.tikėtis (žvilgsnis.EOF)
# Išsaugokite tekstą, kurio tikimasi pagal eilutės modelį
produkcija = vaikas.prieš tai
# Atspausdinkite išvestį
spausdinti ("Šiandien yra:", išvestis.iššifruoti („utf-8“)

Rezultatas

Ši išvestis pasirodys atlikus pirmiau pateiktą scenarijų.

3 pavyzdys: skaitykite katalogo turinį naudodami ssh ryšį

Sukurti ssh ryšį ir perskaityti visų tam tikro katalogo failų ir aplankų sąrašą parodyta šiame scenarijuje.  Čia nustatyto vartotojo slaptažodis bus paimtas iš vartotojo, kad būtų galima užmegzti ssh ryšį naudojant ikrų klasę. Jei nurodytas slaptažodis neteisingas, scenarijus bus nutrauktas rodant klaidos pranešimą.  Jei nurodytas slaptažodis yra teisingas, bet terminalas nėra apibrėžtas, scenarijus parodys ryšio sėkmės pranešimą, išsiųs terminalo tipą ir apibrėžs numatomą komandų eilutės modelį. Jei slaptažodis teisingas ir terminalas apibrėžtas, scenarijus parodys sėkmės pranešimą ir „shell“ komandų eilutę.

# Importuoti „pexpect“ modulį
importuoti žvilgsnį
# Nustatykite ssh ryšio vartotojo vardą
vartotojo vardas = '[el. paštas apsaugotas]'
# Paimkite iš vartotojo galiojantį slaptažodį
Slaptažodis = įvestis ("Įveskite% s prisijungimo slaptažodį:"% username)
# Paleiskite ssh komandą naudodami ikrą
vaikas = žvilgsnis.neršti ('ssh' + vartotojo vardas)
# Palaukite slaptažodžio
vaikas.tikėtis ('slaptažodis:')
# Siųskite slaptažodį, paimtą iš vartotojo
vaikas.siuntimo linija (slaptažodis)
# Tikėtasi trijų rezultatų
i = vaikas.tikėtis (['Leidimas atmestas', 'Terminalo tipas', '[# \ $]'])
# i bus 0, jei ssh negalės prisijungti
jei i == 0:
spausdinti ("Leidimas atimtas pagrindinio kompiuterio. Negalima prisijungti")
vaikas.nužudyti (0)
# i bus 1, jei ssh galės prisijungti, bet terminalas nenustatytas
elif i == 1:
spausdinti ('Prisijungta sėkmingai.\ nTerminalo tipas nenustatytas.„)
vaikas.siuntimo linija ('vt100')
vaikas.tikėtis ('[# \ $]')
# i bus 2, jei ssh galės prisijungti ir bus nustatytas terminalas
elif i == 2:
spausdinti ('Prisijungta sėkmingai.„)
raginimas = vaikas.po to
spausdinti ('Shell Command Prompt:', raginimas.iššifruoti („utf-8“))

Rezultatas

Ši išvestis pasirodys, kai aukščiau pateiktas scenarijus bus vykdomas su neteisingu slaptažodžiu.

Šis išvestis pasirodys, kai aukščiau pateiktas scenarijus bus vykdomas su teisingu slaptažodžiu.

Išvada

„pexpect“ yra labai naudingas modulis „Python“ vartotojams, padedantis jiems automatiškai atlikti įprastas užduotis. Pagrindiniai „Python“ pexpect modulio naudojimo būdai buvo aprašyti šioje pamokoje naudojant paprastus pavyzdžius, kurie padės vartotojams pradėti dirbti su šiuo moduliu.

Kaip sukurti žaidimą „Linux“
Prieš dešimtmetį nedaugelis „Linux“ vartotojų numatė, kad jų mėgstama operacinė sistema vieną dieną bus populiari komercinių vaizdo žaidimų žaidimų pl...
Atvirojo kodo komercinių žaidimų variklių uostai
Nemokami atvirojo kodo ir įvairių platformų žaidimų varikliai gali būti naudojami žaidžiant senus ir kai kuriuos gana naujus žaidimų pavadinimus. Šiam...
Geriausi „Linux“ komandinės eilutės žaidimai
Komandų eilutė yra ne tik jūsų didžiausias sąjungininkas naudojant „Linux“, bet ir pramogų šaltinis, nes ją galite naudoti norėdami žaisti daug įdomių...