1
votes

I am trying to ssh to a test cisco router in a test environment using python paramiko, and run cisco commands in that test router.

Everything works great except for 1 small detail. After running the script I want the ssh session to remain open. (so I can run other commands manually). I want to keep the ssh session open until I type "exit" I found another link with a similar issue but I cant understand the solution. (See here Python ssh - keep connection open after script terminates)

I would appreciate if someone can help me out here

My code

import paramiko
import time

def ssh_session(ip):
    try:
        session = paramiko.SSHClient() #Open the session
        session.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        session.connect(ip, username = "ciscouser1", password = "password")
        connection = session.invoke_shell()

        ####Running Cisco IOS commands###
        connection.send("enable\n")
        connection.send("password1") #sending
        connection.send("\n")
        connection.send("configure terminal\n\n")
        time.sleep(1)
        connection.send("do show ip int brief\n")
        time.sleep(1)
    except paramiko.AuthenticationException:
        print "wrong credentials"
ssh_session("10.10.10.1")
1
Line 13 comment should be #sending enable secret password to router to move to global configuration modeMichael Hilburt

1 Answers

0
votes

The session timeout would be controlled by the SSH server. To the best of my knowledge, the only way to keep your session alive on the client side is to not be inactive, which can be accomplished by sending null packets. As to how to do this specifically with paramiko I am not certain. Perhaps you could send some kind of dummy command (or maybe even an empty string?) every so often?