2013-04-09 23 views
2

我使用的paramiko連接到遠程Cisco路由器和交換機。當連接到這些設備時,我希望能夠在進入「配置」模式時關閉回聲。這樣一來,我可以發出遠程系統命令和避免看到他們回來(因此只專注於尋找錯誤消息)。使用的paramiko時如何關閉本地迴應?

我執行下面的命令來獲得與思科設備外殼:

self.chan = self.transport.open_session() 
    self.chan.get_pty() 
    self.chan.invoke_shell() 

現在,我希望能夠採取的paramiko的文件描述符的PTY併發出類似如下:

fd = self.chan.fileno() 
    old = termios.tcgetattr(fd) 
    old[3] = old[3] | termios.ECHO 
    termios.tcsetattr(fd, termios.TCSADRAIN, old) 

然而,的termios電抗器由chan.fileno返回的文件描述符()。

大多數suggestions關閉回聲,我看到需要在遠程盒子上發出像「stty -echo」這樣的bash命令,但是Cisco路由器沒有運行bash。

回答

1

花了很多時間在這之後,我最終要回pxssh庫。這個庫明確地有一個方法來關閉回聲:

connection.setecho(False) 

......這正是我所需要的。它也(通過父模塊,pexpect)有辦法使用完全相同的圖書館基礎設施(這不幸的是,仍然有必要經常在思科的世界),這樣你就可以有一個使用telnet或ssh和它的連接對象來處理的telnet以完全相同的方式工作。

的paramiko而似乎是一個更清潔,更好地維持圖書館,在社會各界的paramiko的共識似乎是,如果你想停下來呼應你需要告訴遠程系統不呼應。但是當遠程系統不是Linux/bash進程時,這變得困難或不可能。 Pxssh是您需要更精細地控制ssh會話的庫。

相關問題