I have an issue that has been giving me a headache for a few days. I am using the Paramiko module with Python 2.7.10 and I'd like to issue multiple commands to a Brocade router, but only return output from one of the given commands like so:
#!/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) If I were to print the full output it would contain everything issued to the router, but I only want to see output from the show interfaces ethernet 0/1\n command.
Can anyone help with this issue?
One final thing I would like to ask. I want to filter through the output variable and check for occurrences of strings like "up" or "down", but I can't seem to get it to work because everything in the output appears to be on new lines?
For example:
If I iterate over the output variable in a for loop I get all of the characters in the variable like so:
for line in output: print(line) I get an output like this:
t
e
r
m
i
n
a
l
l
e
n
g
t
h
0
Any way around this?
Again,
Thanks in advance for any help.
Best regards,
Aaron C.
output='terminal length 0', followed byfor line in output: print(line)and have the same question with much less boilerplate.