Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Persistent ssh session to Cisco router

I have search on this site and multiple other locations but I have been unable to resolve my problem of connecting and maintaining ssh session after one command. Below is my current code:

#!/opt/local/bin/python

import os  

import pexpect

import paramiko

import hashlib

import StringIO

while True:

      cisco_cmd = raw_input("Enter cisco router cmd:")

      ssh = paramiko.SSHClient()

      ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

      ssh.connect('192.168.221.235', username='nuts', password='cisco', timeout =  30)

      stdin, stdout, stderr = ssh.exec_command(cisco_cmd)

      print stdout.read()

      ssh.close()

      if  cisco_cmd == 'exit': break

I can run multiple commands but for every commands a new ssh session is created. The above program does not work when I need to configuration mode because ssh session is not reused.Any assistance in resolving this matter is greatly appreciated.

like image 480
msudi Avatar asked Mar 08 '11 20:03

msudi


People also ask

What is the use of line Vty 0 4?

By default five vty lines (0–4) are open. You can open additional lines using the line vty command. Once lines are open, login is enabled by default. Before users can access the lines, you must configure a password, disable login using the no login command, or configure AAA authentication on the lines.

Which type of access is secured on a Cisco router?

3. Which type of access is secured on a Cisco router or switch with the enable secret command? The enable secret command secures access to the privileged EXEC mode of a Cisco router or switch.


1 Answers

I used Exscript instead of paramiko and I am now able to get persistent session on IOS device.

#!/opt/local/bin/python
import hashlib
import Exscript

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

account = read_login()              # Prompt the user for his name and password
conn = SSH2()                       # We choose to use SSH2
conn.connect('192.168.221.235')     # Open the SSH connection
conn.login(account)                 # Authenticate on the remote host
conn.execute('conf t')              # Execute the "uname -a" command
conn.execute('interface Serial1/0')
conn.execute('ip address 114.168.221.202 255.255.255.0')
conn.execute('no shutdown')
conn.execute('end')
conn.execute('sh run int Serial1/0')
print conn.response

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

conn.send('exit\r')                 # Send the "exit" command
conn.close()                        # Wait for the connection to close
like image 124
msudi Avatar answered Oct 12 '22 10:10

msudi