2017-08-10 64 views
1

我想在測試環境中使用python paramiko ssh測試cisco路由器,並在該測試路由器中運行cisco命令。如何在使用python登錄後打開paramiko ssh會話?

除了1個小細節外,一切都很好。 運行腳本後我希望ssh會話保持打開狀態。(所以我可以手動運行其他命令)。 我想保持ssh會話打開,直到我輸入「退出」 我發現另一個類似的問題,但我不明白解決方案的鏈接。 (見這裏Python ssh - keep connection open after script terminates

我將不勝感激,如果有人可以幫助我在這裏

我的代碼

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") 
+0

第13行評論應該是**#發送啓用祕密密碼到路由器移動到全局配置模式** –

回答

0

會話超時將通過SSH服務器進行控制。據我所知,在客戶端保持會話活動的唯一方法是不要無效,這可以通過sending null packets完成。至於如何具體與paramiko做這個我不確定。也許你可以每隔一段時間發送一些啞命令(或者甚至是空串)?

+0

感謝您的建議,但它似乎不是這種情況下,我害怕。我登錄到思科路由器不是服務器,但即使如此,我仍然明白你的意思。我只希望腳本執行,然後等待更多手動輸入,直到我選擇關閉連接。有關如何做到這一點的任何想法? –

+0

我明白你在說什麼了。 paramiko源代碼看起來有一個模擬交互式shell的例子,可能會有所幫助: https://github.com/paramiko/paramiko/blob/master/demos/interactive.py – MrName