Como usar o pexpect em python

Como usar o pexpect em python

pexpect é um módulo Python popular para realizar diferentes tipos de tarefas automatizadas. Diferentes tipos de aplicativos interativos, como Telnet, SSH, FTP, etc., pode ser automatizado usando este módulo. É um módulo python puro e não requer um compilador C ou TCL ou espera extensões como outros esperam módulos. Pode funcionar facilmente usando apenas um intérprete Python. Este módulo pode ser usado de duas maneiras. Uma maneira é usar o correr() função, e outra maneira é usar Spawn aula. O correr() A função é fácil de usar do que a classe Spawn e executa as tarefas automatizadas rapidamente. O comando específico ou um programa pode ser executado pelo correr() função que retorna a saída. Esta função pode ser usada como alternativa ao OS.sistema() função. O Spawn A classe é mais poderosa que a correr() função que pode gerar um programa infantil, interagir com ele enviando entrada e aguardando a resposta. Este módulo está instalado em python3 por padrão. As duas maneiras de usar este módulo mostraram neste tutorial.

Usando função run ()

Sintaxe:

A sintaxe do correr() A função é dada abaixo. Tem muitos argumentos para vários propósitos. Mas os 3 ou 4 primeiros argumentos são usados ​​principalmente. O primeiro argumento desta função é obrigatório que assume o comando que esta função será executada. Pode retornar várias saídas. Se o WithExitStatus O argumento é usado com o Falso valor, ele só retornará a saída do comando.

Run (comando, timeout = 30, withExitStatus = false, eventos = nenhum, extra_args = nenhum, logfile = nenhum, cwd = nenhum, Env = nenhum, ** kwargs)

Exemplo 1: diferentes usos da função run ()

Três usos diferentes do correr() A função mostrou no script a seguir. O 'PWD'A saída do comando é executada no primeiro correr() função que exibirá o caminho atual do diretório de trabalho. Em seguida, o correr() A função é usada para determinar os detalhes de um arquivo específico e o nome do arquivo será retirado do usuário. O terceiro correr() A função é usada para fazer o ssh conexão e recuperar todos os arquivos e pastas do rede pasta.

# Importar módulo pexpect
importar pexpect
OS de importação
# Execute o comando simples
Impressão ("O Diretório de Trabalho atual: \ n %s" %pexpect.Run ('PWD').Decode ("UTF-8"))
# Recupere as informações de um arquivo específico
nome do arquivo = input ("Digite um nome de arquivo existente:")
# Verifique se o arquivo existe ou não
se os.caminho.existe (nome do arquivo):
saída = pexpect.Run ("ls -l"+nome do arquivo, withExitStatus = 0)
Impressão ("Informações de um arquivo específico: \ n %s" %saída.Decode ("UTF-8"))
outro:
print ("O arquivo não existe.")
# Recupere os arquivos e a pasta de um diretório específico usando o comando ssh
saída = pexpect.run ("ssh fahmida@localhost 'ls web/'", events = '(?i) senha ':' 12345 \ n ')
impressão ("\ nA saída do comando ssh: \ n %s" %saída.Decode ("UTF-8"))

Saída

A saída a seguir aparecerá após a execução do script acima. Na saída, DOC1.py deu como o nome do arquivo, e os detalhes deste arquivo mostraram. Em seguida, a lista de todos os arquivos do rede Pasta mostrou usando ssh conexão.

Usando aula de spawn

A sintaxe da classe Spawn é dada abaixo. O construtor desta classe pode levar muitos argumentos para muitos propósitos. O primeiro argumento é obrigatório que aceitará o comando de execução.

classe Spawn __init __ (self, comando, args = [], timeout = 30, maxread = 2000, tamanho da janela de pesquisa = nenhum, logfile = nenhum, cwd = nenhum, Env = nenhum)

Exemplo 2: uso simples da aula de spawn

O uso simples da classe Spawn mostrou no script a seguir. O 'data'O comando foi executado aqui usando a classe Spawn. A saída do comando será recuperada criando o objeto da classe Spawn, e a saída é impressa em formato legível pelo homem usando o decodificar() método.

# Importar módulo pexpect
importar pexpect
# Execute o comando Date usando Spawn
criança = pexpect.Spawn ('Data')
# Leia a produção infantil sem gerar EOF
criança.Espere (pexpect.Eof)
# Armazene o texto que é esperado pelo padrão de string
saída = criança.antes
# Imprima a saída
print ("Hoje é:", saída.Decode ("UTF-8"))

Saída

A saída a seguir aparecerá após a execução do script acima.

Exemplo 3: Leia o conteúdo do diretório usando a conexão SSH

Criar conexão SSH e ler a lista de todos os arquivos e pastas de um diretório específico mostrou no script a seguir. Aqui, a senha do usuário definido será retirado do usuário para fazer conexão SSH usando a classe Spawn. Se a senha fornecida estiver incorreta, o script será encerrado mostrando uma mensagem de erro. Se a senha fornecida estiver correta, mas o terminal não estiver definido, o script mostrará a mensagem de sucesso para a conexão, enviará o tipo de terminal e definirá o padrão esperado do prompt de comando. Se a senha estiver correta e o terminal estiver definido, o script mostrará a mensagem de sucesso e o prompt de comando do shell.

# Importar módulo pexpect
importar pexpect
# Defina o nome de usuário para a conexão SSH
nome de usuário = 'fahmida@localhost'
# Pegue uma senha válida do usuário
Senha = entrada ("Digite a senha de login de %s:" %nome de usuário)
# Execute o comando ssh usando spawn
criança = pexpect.Spawn ('ssh' + nome de usuário)
# Aguarde a senha
criança.Espere ('Senha:')
# Envie a senha retirada do usuário
criança.SendLine (senha)
# Esperou três resultados
i = criança.Espere (['permissão negada', 'Tipo de terminal', '[#\ $]']))
# Eu serei 0 se o ssh não puder se conectar
Se eu == 0:
impressão ("Permissão negada pelo host. Incapaz de entrar")
criança.matar (0)
# Eu estarei 1 se o ssh puder se conectar, mas o terminal não estiver definido
elif i == 1:
Imprimir ('conectado com sucesso.\ Nerminal Type não está definido.')
criança.SendLine ('VT100')
criança.Espere ('[#\ $]')
# Eu estarei 2 se o ssh puder conectar e o terminal estiver definido
elif i == 2:
Imprimir ('conectado com sucesso.')
prompt = filho.depois
Print ('Prompt de comando do shell:', prompt.Decode ("UTF-8"))

Saída

A saída a seguir será exibida quando o script acima for executado com a senha errada.

A saída a seguir aparecerá quando o script acima for executado com a senha correta.

Conclusão

Pexpect é um módulo muito útil para usuários de python que os ajuda a executar suas tarefas regulares automaticamente. Os usos muito básicos do módulo Pexpect of Python foram descritos neste tutorial usando exemplos fáceis para ajudar os usuários a começar a trabalhar com este módulo.