Python Forum

Full Version: How to keep paramiko ssh session open after loggin in using python?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
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 https://stackoverflow.com/questions/3201...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 enable secret password to router to move to global configuration mode
        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")
Then you don't want to use paramiko, as that doesn't leave connections open.  The answer given in the SO article you linked is to simply use subprocess to call the system's ssh command.  In your case, you'd probably supply stdin to subprocess.
@nilamo,
Thanks for the reply but I am still new to python.
Can you point me to a guide or something to explain?
What is stdin?
In general, streams (of which stdin is one), are unrelated to python: https://en.wikipedia.org/wiki/Standard_streams
With regards to subprocess, it's one of the arguments you can use to send data to the child process: https://docs.python.org/3.6/library/subp...rocess.run