Python: SSH into Cisco device and run show commands

D3l_Gato picture D3l_Gato · Aug 21, 2011 · Viewed 67.6k times · Source

I have read over this post extensively and have researched Exscript, paramiko, Fabric and pxssh and I am still lost Persistent ssh session to Cisco router . I am new to python scripting.

I am attempting to write a script in Python that will SSH into a Cisco device, run "show version", display the results in notepad, then end the script.

I can get this working with show commands that do not require the user to interact with the device. For example:

from Exscript.util.interact import read_login
from Exscript.protocols import SSH2

account = read_login()              
conn = SSH2()                       
conn.connect('192.168.1.11')     
conn.login(account)                 

conn.execute('show ip route')
print conn.response

conn.send('exit\r')               
conn.close()                        

The above script will display the results of "show ip route".

If I try conn.execute('show version') the script times out because the Cisco device is expecting the user to press space bar to continue, press return to show the next line or any key to back out to the command line.

How can I execute the show version command, press space bar twice to display the entire output of the show version command, then print it in python?

Thank you!!!!

Answer

peterjmag picture peterjmag · Aug 21, 2011

Try executing terminal length 0 before running show version. For example:

from Exscript.util.interact import read_login
from Exscript.protocols import SSH2

account = read_login()              
conn = SSH2()                       
conn.connect('192.168.1.11')     
conn.login(account)  

conn.execute('terminal length 0')           

conn.execute('show version')
print conn.response

conn.send('exit\r')               
conn.close()  

From the Cisco terminal docs: http://www.cisco.com/en/US/docs/ios/12_1/configfun/command/reference/frd1003.html#wp1019281