2017-06-05 60 views
0

我試圖創建一個通過小型機從另一臺機器連接到一臺機器的功能鍵。連接到minicom後,應按下輸入命令以將命令發送到由minicom連接的機器。我的Python代碼如下:發送輸入上的paramiko蟒SSH

ssh = paramiko.SSHClient() 
ssh.load_system_host_keys() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh.connect(self.serialHost, username=self.username, password=self.password) 
shell = ssh.invoke_shell() 
shell.send('minicom free -o') 
shell.send('\u000d') 
ssh.close() 

有人能告訴我怎樣才能正確地發送輸入密鑰?

回答

0

你可以嘗試'\r\n'作爲返回鍵,但我認爲還有一個exec_command方法調用,不需要返回鍵。就像是。

shell.exec_command('minicom free -o') 

source

0

通常情況下,試圖執行的paramiko中的命令時,你不必調用殼可以叫ssh.exec_command(...)。如果要執行的命令依賴於環境,啓動外殼會給你,那麼你必須顯式調用invoke_shell()方法。

當您在paramiko中使用invoke_shell()時,您必須發送特定shell所期望的行終止字符。如果你ssh'ing到該機擁有bash,因爲它是默認的shell,你必須在每個命令後發送一個換行符(即'\n')字符。例如:

shell.send('ls\n') 

,而不是

shell.send('ls') 

如果要連接到舊的Windows機器,你需要同時發送回車和該命令是一個換行符(即'\r\n')處理。