Python

Как да използвам pexpect в Python

Как да използвам pexpect в Python

pexpect е популярен модул на Python за извършване на различни видове автоматизирани задачи. Различни видове интерактивни приложения като telnet, ssh, ftp и др., може да се автоматизира с помощта на този модул. Това е чист модул на Python и не изисква C компилатор или разширения TCL или Expect, както другите очакват модули. Може да работи лесно, като се използва само интерпретатор на Python.  Този модул може да се използва по два начина. Един от начините е да се използва тичам () функция, а друг начин е да се използва хвърлят хайвера си клас. The тичам () Функцията е лесна за използване от класа на хайвера и изпълнява автоматизираните задачи бързо. Конкретната команда или програма може да бъде изпълнена от тичам () функция, която връща изхода. Тази функция може да се използва като алтернатива на операционна система.система() функция. The хвърлят хайвера си клас е по-мощен от тичам () функция, която може да породи детска програма, да взаимодейства с нея чрез изпращане на вход и изчакване на отговора. Този модул е ​​инсталиран по подразбиране в python3. Двата начина за използване на този модул са показани в този урок.

Използване на функцията run ()

Синтаксис:

Синтаксисът на тичам () функция е дадена по-долу.  Той има много аргументи за различни цели. Но най-вече се използват първите 3 или 4 аргумента. Първият аргумент на тази функция е задължителен, който приема командата, която тази функция ще изпълни. Той може да върне множество изходи. Ако с екзитстат аргументът се използва с Невярно стойност, тя ще върне само изхода на командата.

изпълнение (команда, изчакване = 30, withexitstatus = False, събития = Няма, extra_args = Няма, logfile = Няма, cwd = Няма, env = Няма, ** kwargs)

Пример-1: Различни приложения на функцията run ()

Три различни приложения на тичам () функция са показани в следния скрипт. "pwd'изходът на командата се изпълнява в първата тичам () функция, която ще покаже текущия път на работната директория. След това тичам () функция се използва за определяне на детайлите на определен файл и името на файла ще бъде взето от потребителя. Третият тичам () функцията се използва за създаване на ssh връзка и извлечете всички файлове и папки от уеб папка.

# Импортиране на модул pexpect
внос pexpect
внос os
# Изпълнете проста команда
print ("Текущата работна директория: \ n% s"% pexpect.стартиране ('pwd').декодиране ("utf-8"))
# Извличане на информацията за определен файл
filename = input ("Въведете съществуващо име на файл:")
# Проверете дали файлът съществува или не
ако os.път.съществува (име на файл):
изход = pexpect.стартиране ("ls -l" + име на файл, withexitstatus = 0)
print ("Информация за определен файл: \ n% s"% изход.декодиране ("utf-8"))
друго:
print ("Файлът не съществува.")
# Изтеглете файловете и папката на определена директория с помощта на ssh команда
изход = pexpect.стартиране ("ssh [имейл защитен] 'ls web /'", събития = '(?i) парола ':' 12345 \ n ')
print ("\ nИзходът на ssh команда: \ n% s"% изход.декодиране ("utf-8"))

Изход

След изпълнението на горния скрипт ще се появи следният изход. В изхода, doc1.py е дал като име на файла и са показани подробностите за този файл. След това списъкът с всички файлове на уеб папката е показана с помощта на ssh Връзка.

Използване на клас за хвърляне на хайвера

Синтаксисът на класа на хайвера е даден по-долу. Конструкторът на този клас може да вземе много аргументи за много цели. Първият аргумент е задължителен, който ще приеме командата за изпълнение.

class spawn __init __ (self, command, args = [], timeout = 30, maxread = 2000, размер на прозореца за търсене = none, logfile = none, cwd = none, env = none)

Пример-2: Лесно използване на клас за хвърляне на хайвера

Лесното използване на класа на хайвера е показано в следващия скрипт. "дата'командата е изпълнена тук, като се използва класът spawn. Изходът на командата ще бъде извлечен чрез създаване на обекта от класа на хайвера, а изходът ще бъде отпечатан във формат, четим от човека декодиране () метод.

# Импортиране на модул pexpect
внос pexpect
# Изпълнете командата за дата, използвайки spawn
дете = pexpect.spawn ('дата')
# Прочетете изхода на детето, без да генерирате EOF
дете.очаквайте (pexpect.EOF)
# Съхранявайте текста, който се очаква от шаблона на низа
изход = дете.преди
# Отпечатайте изхода
print ("Днес е:", изход.декодиране ("utf-8"))

Изход

След изпълнението на горния скрипт ще се появи следният изход.

Пример-3: Прочетете съдържанието на директорията, използвайки ssh връзка

Създаването на ssh връзка и четенето на списъка с всички файлове и папки на определена директория са показани в следващия скрипт.  Тук паролата на дефинирания потребител ще бъде взета от потребителя, за да направи ssh връзка, използвайки класа на хайвера. Ако дадената парола е неправилна, тогава скриптът ще бъде прекратен чрез показване на съобщение за грешка.  Ако дадената парола е правилна, но терминалът не е дефиниран, тогава скриптът ще покаже съобщението за успех за връзката, ще изпрати типа на терминала и ще определи очаквания модел на командния ред. Ако паролата е правилна и терминалът е дефиниран, скриптът ще покаже съобщението за успех и командния ред на черупката.

# Импортиране на модул pexpect
внос pexpect
# Задайте потребителското име за ssh връзка
username = '[имейл защитен]'
# Вземете валидна парола от потребителя
Парола = въвеждане ("Въведете паролата за влизане на% s:"% потребителско име)
# Изпълнете ssh команда, като използвате spawn
дете = pexpect.spawn ('ssh' + потребителско име)
# Изчакайте паролата
дете.очаквайте ('парола:')
# Изпратете паролата, взета от потребителя
дете.изпращане (парола)
# Очаква се три изхода
i = дете.очаквайте (['Разрешение отказано', 'Тип терминал', '[# \ $]'])
# ще бъда 0, ако ssh не може да се свърже
ако i == 0:
print ("Разрешението е отказано от хост. Не може да влезе")
дете.убий (0)
# ще бъда 1, ако ssh може да се свърже, но терминалът не е настроен
elif i == 1:
print ('Свързани успешно.\ nТип терминал не е зададен.')
дете.sendline ('vt100')
дете.очаквайте ('[# \ $]')
# i ще бъде 2, ако ssh може да се свърже и терминалът е настроен
elif i == 2:
print ('Свързани успешно.')
prompt = дете.след
print ('Команден ред на Shell:', ред.декодиране ("utf-8"))

Изход

Следният изход ще се появи, когато горният скрипт се изпълни с грешна парола.

Следният изход ще се появи, когато горният скрипт се изпълни с правилната парола.

Заключение

pexpect е много полезен модул за потребителите на Python, който им помага да изпълняват автоматично своите регулярни задачи. Основните приложения на модула pexpect на Python са описани в този урок, като се използват лесни примери, за да помогнат на потребителите да започнат работа с този модул.

Контролирайте и управлявайте движението на мишката между множество монитори в Windows 10
Двоен дисплей на мишката ви позволява да контролирате и конфигурирате движението на мишката между множество монитори, като забавя движенията му близо ...
WinMouse ви позволява да персонализирате и подобрите движението на показалеца на мишката на компютър с Windows
Ако искате да подобрите функциите по подразбиране на показалеца на мишката, използвайте безплатна програма WinMouse. Той добавя още функции, за да ви ...
Бутонът на левия бутон на мишката не работи в Windows 10
Ако използвате специална мишка с вашия лаптоп или настолен компютър, но бутонът на левия бутон на мишката не работи на Windows 10/8/7 по някаква причи...