2017-06-05 40 views
0

私はminicom経由で別のマシンからマシンに接続する関数を作成しようとしています。 minicomに接続したら、minicomで接続されたマシンにコマンドを送るためにenterを押してください。次のように私のPythonコードは次のとおりです。pythonでEnterキーを送る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()を使用する場合、特定のシェルが期待する行終了文字を送信する必要があります。あなたがsshしているマシンがデフォルトのシェルであるbashを持っている場合は、各コマンドの後に改行文字(つまり'\n')を送信する必要があります。たとえば、次のように

shell.send('ls\n') 

代わりの

shell.send('ls') 

古いWindowsマシンに接続する場合は、あなたがするコマンドのためのキャリッジリターンと改行(すなわち'\r\n')の両方を送信する必要があります処理される。

関連する問題