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!!!!
In python SSH is implemented by using the python library called fabric. It can be used to issue commands remotely over SSH.
The most common way to execute scripts in IOS, is to run them in the CLI command prompt accessed via telnet or ssh. Honestly most people prefer to KISS here. and just open an ssh prompt in java, then 'config t' and paste or input you access-list commands Pretty simple and easy to automate in any language.
Paramiko is a Python library that makes a connection with a remote device through SSh. Paramiko is using SSH2 as a replacement for SSL to make a secure connection between two devices. It also supports the SFTP client and server model.
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
First execute
terminal length 0
to disable paging.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With