Saída de comando de captura do Paramiko
Eu tenho um problema que me causa dor de cabeça há alguns dias. Estou usando o módulo Paramiko com o Python 2.7.10 e gostaria de emitir vários comandos para um roteador Brocade, mas apenas retornar a saída de um dos comandos fornecidos, como:
#!/usr/bin/env python
import paramiko, time
router = 'r1.test.example.com'
password = 'password'
username = 'testuser'
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(router, username=username, password=password)
print('Successfully connected to %s' % router)
remote_conn = ssh.invoke_shell()
output = remote_conn.recv(1000)
# Disable paging on Brocade.
remote_conn.send('terminal length 0\n')
# Check interface status.
remote_conn.send('show interfaces ethernet 0/1\n') # I only want output from this command.
time.sleep(2)
output = remote_conn.recv(5000)
print(output)
Se eu imprimir a saída completa, ela conterá tudo o que foi emitido para o roteador, mas eu só quero ver a saída do programainterfaces ethernet 0/1\n
comando.
Alguém pode ajudar com esse problema?
Uma última coisa que gostaria de perguntar. Eu quero filtrar pelooutput
variável e verifique se há ocorrências de strings como "up" ou "down", mas não consigo fazê-lo funcionar porque tudo na saída parece estar em novas linhas?
Por exemplo:
Se eu iterar sobre ooutput
variável em um loop for, recebo todos os caracteres da variável da seguinte maneira:
for line in output:
print(line)
Eu recebo uma saída como esta:
t
e
r
m
i
n
a
l
l
e
n
g
t
h
0
Alguma maneira de contornar isso?
Novamente,
Agradecemos antecipadamente por qualquer ajuda.
Cumprimentos,
Aaron C.