Python

Как использовать pexpect в Python

Как использовать pexpect в Python

ожидание это популярный модуль Python для выполнения различных типов автоматизированных задач. Различные типы интерактивных приложений, такие как telnet, ssh, ftp и т. Д., можно автоматизировать с помощью этого модуля. Это чистый модуль Python, и он не требует компилятора C или расширений TCL или Expect, как другие ожидают модули. Он может легко работать, используя только интерпретатор Python.  Этот модуль можно использовать двумя способами. Один из способов - использовать запустить() функция, а другой способ - использовать порождать класс. В запустить() функция проста в использовании, чем класс spawn, и быстро выполняет автоматические задачи. Конкретная команда или программа могут быть выполнены запустить() функция, которая возвращает результат. Эта функция может использоваться как альтернатива Операционные системы.система() функция. В порождать класс более мощный, чем запустить() функция, которая может порождать дочернюю программу, взаимодействовать с ней, отправляя ввод и ожидая ответа. Этот модуль установлен в python3 по умолчанию. В этом руководстве показаны два способа использования этого модуля.

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

Синтаксис:

Синтаксис запустить() функция приведена ниже.  У него много аргументов для разных целей. Но чаще всего используются первые 3 или 4 аргумента. Первый аргумент этой функции является обязательным и принимает команду, которую эта функция будет выполнять. Он может возвращать несколько выходов. Если с экситстатусом аргумент используется с Ложь значение, он вернет только вывод команды.

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

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

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

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

Выход

Следующий вывод появится после выполнения вышеуказанного скрипта. На выходе, doc1.ру указано как имя файла, и подробности этого файла показали. Далее список всех файлов сеть папка была показана с использованием ssh связь.

Использование класса спауна

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

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

Пример-2: Простое использование класса spawn

Простое использование класса spawn показано в следующем скрипте. 'Дата'здесь была выполнена команда с использованием класса spawn. Выходные данные команды будут получены путем создания объекта класса порождения, а выходные данные будут напечатаны в удобочитаемом формате с использованием декодировать () метод.

# Импортировать модуль pexpect
импортная перспектива
# Запускаем команду date с помощью spawn
ребенок = pexpect.spawn ('дата')
# Прочитать дочерний вывод без генерации EOF
ребенок.ожидать (ожидать.EOF)
# Сохраняем текст, ожидаемый строковым шаблоном
output = child.перед
# Распечатать вывод
print ("Сегодня:", вывод.декодировать ("utf-8"))

Выход

Следующий вывод появится после выполнения вышеуказанного скрипта.

Пример-3: прочитать содержимое каталога с помощью ssh-соединения

Создание ssh-соединения и чтение списка всех файлов и папок определенного каталога показано в следующем скрипте.  Здесь пароль определенного пользователя будет взят у пользователя, чтобы установить ssh-соединение с использованием класса spawn. Если заданный пароль неверен, скрипт будет завершен с отображением сообщения об ошибке.  Если заданный пароль правильный, но терминал не определен, сценарий покажет сообщение об успешном подключении, отправит тип терминала и определит ожидаемый шаблон командной строки. Если пароль правильный и терминал определен, сценарий покажет сообщение об успешном завершении и командную строку оболочки.

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

Выход

Следующий вывод появится, когда приведенный выше сценарий выполняется с неправильным паролем.

Следующий вывод появится, когда приведенный выше сценарий будет выполнен с правильным паролем.

Заключение

pexpect - очень полезный модуль для пользователей Python, который помогает им автоматически выполнять свои обычные задачи. В этом руководстве описаны самые простые способы использования модуля pexpect в Python с помощью простых примеров, которые помогут пользователям начать работу с этим модулем.

Как увеличить FPS в Linux?
FPS означает Кадров в секунду. Задача FPS - измерить частоту кадров при воспроизведении видео или во время игры. Проще говоря, количество непрерывных ...
Лучшие игры Oculus App Lab
Если вы владелец гарнитуры Oculus, вы должны знать о загрузке неопубликованных приложений. Боковая загрузка - это процесс установки на гарнитуру содер...
10 лучших игр для Ubuntu
Платформа Windows была одной из доминирующих платформ для игр из-за огромного процента игр, которые разрабатываются сегодня с встроенной поддержкой Wi...