Persistent ssh session to Cisco router
Question: 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.


Answer: 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
    

