Jak używać Pexect w Python

Jak używać Pexect w Python

Pexect to popularny moduł Python do wykonywania różnych rodzajów zautomatyzowanych zadań. Różne rodzaje interaktywnych aplikacji, takie jak Telnet, SSH, FTP itp., można zautomatyzować za pomocą tego modułu. Jest to czysty moduł Python i nie wymaga kompilatora C ani TCL ani nie oczekuje rozszerzeń, tak jak inni oczekują modułów. Może łatwo działać za pomocą tylko interpretera Pythona. Ten moduł może być używany na dwa sposoby. Jednym ze sposobów jest użycie uruchomić() funkcja, a innym sposobem jest użycie ikra klasa. uruchomić() Funkcja jest łatwa w użyciu niż klasa spawnowa i szybko wykonuje zautomatyzowane zadania. Konkretne polecenie lub program może być wykonany przez uruchomić() funkcja, która zwraca dane wyjściowe. Ta funkcja może być używana jako alternatywa dla OS.system() funkcjonować. ikra klasa jest silniejsza niż uruchomić() funkcja, która może odrodzić program dziecięcy, oddziaływać z nim, wysyłając dane wejściowe i czekając na odpowiedź. Ten moduł jest domyślnie zainstalowany w Python3. W tym samouczku pokazano dwa sposoby korzystania z tego modułu.

Za pomocą funkcji run ()

Składnia:

Składnia uruchomić() Funkcja podano poniżej. Ma wiele argumentów do różnych celów. Ale najczęściej używane są pierwsze 3 lub 4 argumenty. Pierwszy argument tej funkcji jest obowiązkowy, który przyjmuje polecenie, że ta funkcja wykona. Może zwrócić wiele wyjść. Jeśli Zexitstatus Argument jest używany z FAŁSZ wartość, zwróci tylko wyjście polecenia.

uruchom (polecenie, limit czasu = 30, withexitstatus = false, zdarzenia = brak, extra_args = brak, logfile = brak, cwd = brak, env = brak, ** kwargs)

Przykład-1: różne zastosowania funkcji run ()

Trzy różne zastosowania uruchomić() Funkcja pokazała w następującym skrypcie. ''PWD„Wyjście polecenia jest wykonywane w pierwszym uruchomić() funkcja, która wyświetli bieżącą ścieżkę katalogu roboczego. Następnie uruchomić() Funkcja służy do określenia szczegółów określonego pliku, a nazwa pliku zostanie pobrana od użytkownika. Trzeci uruchomić() funkcja służy do tworzenia ssh połączenie i pobieraj wszystkie pliki i foldery z sieć teczka.

# Importuj moduł Pexpect
Importuj PEXECT
Import OS
# Uruchom proste polecenie
Drukuj („Obecny katalog roboczy: \ n %s” %pexect.RUN („PWD”).dekoduj („UTF-8”))
# Odzyskaj informacje o określonym pliku
fileName = input („Wprowadź istniejącą nazwę pliku:”)
# Sprawdź plik istnieje lub nie
Jeśli OS.ścieżka.istnieje (nazwa pliku):
wyjście = Pexect.RUN („ls -l”+nazwa pliku, withexitstatus = 0)
wydrukuj („Informacje o określonym pliku: \ n %s” %.dekoduj („UTF-8”))
w przeciwnym razie:
drukuj („plik nie istnieje.")
# Odzyskaj pliki i folder konkretnego katalogu za pomocą polecenia SSH
wyjście = Pexect.RUN („ssh fahmida@localHost 'ls web/'”, events = '(?i) Hasło ':' 12345 \ n ')
Drukuj („\ n Dane wyjściowe polecenia SSH: \ n %s” %wyjście.dekoduj („UTF-8”))

Wyjście

Następujące dane wyjściowe pojawią się po wykonaniu powyższego skryptu. Na wyjściu, Doc1.py dał jako nazwę pliku i pokazano szczegóły tego pliku. Następnie lista wszystkich plików sieć Folder pokazał za pomocą ssh połączenie.

Korzystanie z klasy Spawn

Składnia klasy spawnowej podano poniżej. Konstruktor tej klasy może wziąć wiele argumentów do wielu celów. Pierwszy argument jest obowiązkowy, który przyjmie polecenie do wykonania.

klasa spawn __init __ (self, polecenie, args = [], limit czasu = 30, maxread = 2000, rozmiar okna wyszukiwania = brak, logfile = brak, cwd = brak, env = brak)

Przykład-2: Proste użycie klasy spawn

Proste użycie klasy Spawn pokazano w następującym skrypcie. ''data„Polecenie zostało tutaj wykonane przy użyciu klasy Spawn. Dane wyjściowe polecenia zostanie pobrane przez utworzenie obiektu klasy Spawn, a dane wyjściowe jest drukowane w formacie czytelnym człowieka za pomocą użycia rozszyfrować() metoda.

# Importuj moduł Pexpect
Importuj PEXECT
# Uruchom polecenie daty za pomocą Spawn
Dziecko = Pexect.Spawn („data”)
# Przeczytaj wyjście dla dzieci bez generowania EOF
dziecko.Spodziewaj się (Pexect.EOF)
# Przechowuj tekst oczekiwany przez wzór łańcucha
wyjście = dziecko.zanim
# Wydrukuj wyjście
Drukuj („Today Is:”, wyjście.dekoduj („UTF-8”))

Wyjście

Następujące dane wyjściowe pojawią się po wykonaniu powyższego skryptu.

Przykład-3: Przeczytaj zawartość katalogu za pomocą połączenia SSH

Tworzenie połączenia SSH i odczyt listy wszystkich plików i folderów konkretnego katalogu pokazano w następującym skrypcie. Tutaj hasło zdefiniowanego użytkownika zostanie pobrane od użytkownika, aby stworzyć połączenie SSH za pomocą klasy Spawn. Jeśli podane hasło jest nieprawidłowe, skrypt zostanie zakończony, pokazując komunikat o błędzie. Jeśli podane hasło jest poprawne, ale terminal nie jest zdefiniowany, skrypt wyświetli komunikat sukcesu dla połączenia, wyślij typ terminalu i zdefiniuj oczekiwany wzór wiersza polecenia. Jeśli hasło jest poprawne, a terminal jest zdefiniowany, skrypt wyświetli komunikat sukcesu i wiersz polecenia powłoki.

# Importuj moduł Pexpect
Importuj PEXECT
# Ustaw nazwę użytkownika dla połączenia SSH
nazwa użytkownika = 'fahmida@localHost'
# Weź prawidłowe hasło od użytkownika
Hasło = wejście („wprowadź hasło logowania %s:„ %nazwa użytkownika)
# Uruchom polecenie ssh za pomocą spawn
Dziecko = Pexect.Spawn („ssh” + nazwa użytkownika)
# Poczekaj na hasło
dziecko.Spodziewaj się („Hasło:”)
# Wyślij hasło pobrane od użytkownika
dziecko.Wyślij (hasło)
# Oczekiwane trzy wyjście
i = dziecko.Oczekuj ([„Odmówiono zgody”, „terminal typu”, „[#\ $] '])
# Będę 0, jeśli SSH nie może się połączyć
Jeśli i == 0:
Drukuj („Zezwolenie odmowy przez hosta. Niezdolny do logowania")
dziecko.Zabij (0)
# Będę 1, jeśli SSH będzie w stanie się połączyć, ale terminal nie jest ustawiony
Elif I == 1:
druk („powiązane pomyślnie.\ Nterminal Typ nie jest ustawiony.')
dziecko.Wyślij LINE („VT100”)
dziecko.Spodziewaj się ('[#\ $]')
# Będę 2, jeśli SSH jest w stanie się połączyć, a terminal jest ustawiony
Elif I == 2:
druk („powiązane pomyślnie.')
monit = dziecko.Po
print („wiersz polecenia powłoki:”, wiersz.dekoduj („UTF-8”))

Wyjście

Następujące dane wyjściowe pojawi się, gdy powyższy skrypt zostanie wykonywany z niewłaściwym hasłem.

Następujące dane wyjściowe pojawi się, gdy powyższy skrypt zostanie wykonywany z poprawnym hasłem.

Wniosek

Pexect jest bardzo pomocnym modułem dla użytkowników Pythona, który pomaga im automatycznie wykonywać regularne zadania. W tym samouczku opisano bardzo podstawowe zastosowania modułu PEXECT Python za pomocą łatwych przykładów, aby pomóc użytkownikom rozpocząć pracę z tym modułem.