Piton

A pexpect használata a Pythonban

A pexpect használata a Pythonban

elgondolás egy népszerű Python modul különféle típusú automatizált feladatok elvégzésére. Különböző típusú interaktív alkalmazások, például telnet, ssh, ftp stb., a modul segítségével automatizálható. Ez egy tiszta Python modul, és nem igényel sem C fordítót, sem TCL-t, sem az Expect kiterjesztéseket, mint mások várják a modulokat. Könnyen működhet, ha csak Python tolmácsot használ.  Ez a modul kétféleképpen használható. Az egyik mód a fuss() funkció, és egy másik módja a használat ívik osztály. A fuss() funkció könnyen használható, mint a spawn osztály, és gyorsan elvégzi az automatizált feladatokat. Az adott parancsot vagy programot a fuss() a kimenetet visszaadó függvény. Ez a funkció használható a os.rendszer() funkció. A ívik osztály erősebb, mint a fuss() funkció, amely elősegítheti a gyermekprogram létrehozását, kölcsönhatásba léphet vele input küldésével és a válaszra várással. Ez a modul alapértelmezés szerint a python3-ba van telepítve. A modul használatának két módja megmutatkozott ebben az oktatóanyagban.

A run () függvény használata

Szintaxis:

A szintaxisa a fuss() funkciót az alábbiakban adjuk meg.  Számos érve van különféle célokra. De az első 3 vagy 4 érvet többnyire használják. A függvény első argumentuma kötelező, amely megkapja a parancsot, amelyet a függvény végrehajtani fog. Több kimenetet adhat vissza. Ha a withexitstatus argumentumot a Hamis értéket, csak a parancs kimenetét adja vissza.

futtatás (parancs, időtúllépés = 30, withexitstatus = hamis, események = nincs, extra_args = nincs, logfájl = nincs, cwd = nincs, env = nincs, ** kwargs)

1. példa: A run () függvény különböző felhasználási módjai

A. Három különböző felhasználási módja fuss() funkció a következő szkriptben látható. A 'pwd'' parancs kimenetét az elsőben hajtjuk végre fuss() az aktuális munkakönyvtár elérési útját megjelenítő funkció. Ezután a fuss() függvény egy adott fájl részleteinek meghatározására szolgál, és a fájlnevet a felhasználó veszi át. A harmadik fuss() függvény a ssh kapcsolatot, és töltse le az összes fájlt és mappát a web mappába.

# Pexpect modul importálása
import pexpect
import os
# Futtasson egyszerű parancsot
print ("A jelenlegi munkakönyvtár: \ n% s"% pexpect.run ('pwd').dekódolás ("utf-8"))
# Egy adott fájl információinak lekérése
fájlnév = input ("Adjon meg egy meglévő fájlnevet:")
# Ellenőrizze, hogy a fájl létezik-e vagy sem
ha os.pálya.létezik (fájlnév):
output = pexpect.futtatás ("ls -l" + fájlnév, withexitstatus = 0)
print ("Adott fájl adatai: \ n% s"% output.dekódolás ("utf-8"))
más:
print ("A fájl nem létezik.")
# Az ssh paranccsal töltse le az adott könyvtár fájljait és mappáit
output = pexpect.run ("ssh [e-mail védett] 'ls web /'", események = '(?i) jelszó ':' 12345 \ n ')
print ("\ nAz ssh parancs kimenete: \ n% s"% output.dekódolás ("utf-8"))

Kimenet

A fenti kimenet a fenti parancsfájl végrehajtása után jelenik meg. A kimenetben, doc1.py fájlnévként megadta, és a fájl részletei megmutatták. Ezután a fájl összes fájljának listája web mappát a ssh kapcsolat.

Spawn osztály használata

Az ívás osztály szintaxisa az alábbiakban található. Ennek az osztálynak a kivitelezője sok célt szolgálhat sok érvvel. Az első argumentum kötelező, amely végrehajtja a parancsot.

class spawn __init __ (self, command, args = [], timeout = 30, maxread = 2000, search window size = none, logfile = none, cwd = none, env = none)

2. példa: A spawn osztály egyszerű használata

A spawn osztály egyszerű használata a következő szkriptben látható. A 'dátum'parancsot itt hajtották végre a spawn osztály használatával. A parancs kimenetét a spawn osztály objektumának létrehozásával kapjuk meg, és a kimenetet ember által olvasható formátumban nyomtatjuk a dekódolni () módszer.

# Pexpect modul importálása
import pexpect
# Futtassa a dátum parancsot a spawn használatával
gyermek = szemlélet.spawn („dátum”)
# Olvassa el a gyermek kimenetét anélkül, hogy EOF-ot generálna
gyermek.elvár (pexpect.EOF)
# Tárolja azt a szöveget, amelyet a karakterlánc minta vár
output = gyermek.előtt
# Nyomtassa ki a kimenetet
print ("Ma van:", output.dekódolás ("utf-8"))

Kimenet

A fenti kimenet a fenti parancsfájl végrehajtása után jelenik meg.

3. példa: Olvassa el a könyvtár tartalmát ssh kapcsolaton keresztül

Az ssh kapcsolat létrehozása és az adott könyvtár összes fájljának és mappájának a felolvasása a következő szkriptben látható.  Itt a meghatározott felhasználó jelszavát elvesszük a felhasználótól az ssh kapcsolat létrehozásához a spawn osztály használatával. Ha a megadott jelszó helytelen, akkor a parancsfájl hibaüzenet megjelenítésével megszűnik.  Ha a megadott jelszó helyes, de a terminál nincs meghatározva, akkor a parancsfájl megmutatja a kapcsolat sikert jelentő üzenetét, elküldi a terminál típusát és meghatározza a parancssor várható mintáját. Ha a jelszó helyes, és a terminál meg van határozva, a szkript megjeleníti a sikerüzenetet és a shell parancssort.

# Pexpect modul importálása
import pexpect
# Állítsa be az ssh kapcsolat felhasználónevét
felhasználónév = '[email protected]'
# Vegyen egy érvényes jelszót a felhasználótól
Jelszó = bevitel ("Adja meg a (z)% s bejelentkezési jelszavát:"% felhasználónév)
# Futtassa az ssh parancsot a spawn használatával
gyermek = szemlélet.spawn ('ssh' + felhasználónév)
# Várja meg a jelszót
gyermek.várható ('jelszó:')
# Küldje el a felhasználótól vett jelszót
gyermek.sendline (Jelszó)
# Várható három kimenet
i = gyermek.várható (['Engedély megtagadva', 'Terminál típusa', '[# \ $]'])
# én 0 leszek, ha az ssh nem tud csatlakozni
ha i == 0:
nyomtatás ("Az engedélyt megtagadta a gazdagép. Nem lehet bejelentkezni ")
gyermek.megöl (0)
# i 1 lesz, ha az ssh képes csatlakozni, de a terminál nincs beállítva
elif i == 1:
print ('Sikeres csatlakozás.\ nA terminál típusa nincs beállítva.')
gyermek.sendline ('vt100')
gyermek.várható ('[# \ $]')
# i 2 lesz, ha az ssh képes csatlakozni és a terminál be van állítva
elif i == 2:
print ('Sikeres csatlakozás.')
prompt = gyermek.utána
print ('Shell parancssor:', prompt.dekódolás ("utf-8"))

Kimenet

A következő kimenet jelenik meg, ha a fenti szkriptet rossz jelszóval hajtják végre.

A következő kimenet jelenik meg, amikor a fenti parancsfájlt a megfelelő jelszóval hajtják végre.

Következtetés

A pexpect egy nagyon hasznos modul a Python felhasználók számára, amely segíti őket a szokásos feladataik automatikus elvégzésében. A bemutatóban a Python pexpect moduljának alapvető felhasználásait ismertettük egyszerű példák segítségével, hogy segítsen a felhasználóknak elkezdeni a munkát ezzel a modullal.

OpenTTD vs Simutrans
Saját közlekedési szimuláció létrehozása szórakoztató, pihentető és rendkívül csábító lehet. Ezért meg kell győződnie arról, hogy a lehető legtöbb ját...
OpenTTD bemutató
Az OpenTTD az egyik legnépszerűbb üzleti szimulációs játék. Ebben a játékban létre kell hoznia egy csodálatos szállítási vállalkozást. Azonban kezdete...
SuperTuxKart Linuxhoz
A SuperTuxKart egy nagyszerű cím, amelynek célja, hogy ingyenesen hozza el a Mario Kart élményét Linux rendszerén. Elég kihívást jelentő és szórakozta...