2016-10-15 46 views
1

'ls/home'の結果をssh.Soを使用してmylog1.txtに入れたいと思っています。このスクリプトは、mylog1.txtで出力がない、エラーがない。Pythonのpexpectスクリプトはエラーなく実行されますが、出力ファイルには出力がありません

#!/usr/bin/env python 
import pexpect 
import sys 

child=pexpect.spawn('ssh [email protected]') 
fout=file('mylog1.txt','w') 
child.logfile=fout 

child.expect("password:") 
child.sendline("xxxxx") 
child.expect('$') 
child.sendline('ls /home') 
shiyanlou:pythontest/ $ cat mylog1.txt                      
[email protected]'s password: xxxxxxx 
ls /home 

だけのコマンドがmylog1.txt file.Whyでありけん引していますか?

+0

ありがとうございました! @ whjm.I私のコードを変更しました。最後の行にchild.expect(pexpect.EOF)を追加すると、動作します! – garenwang

答えて

0

を試して、あなたをアドバイスします。次の例を参照してください(パスワードプロンプトがないようにsshの公開鍵認証を使用しています)。

[STEP 106] # cat foo.py 
import pexpect 

shell_prompt = 'bash-[.0-9]+[$#] ' 

ssh = pexpect.spawn('ssh -t 127.0.0.1 bash --noprofile --norc') 
ofile = file('file.out', 'w') 
ssh.logfile_read = ofile 

ssh.expect(shell_prompt) 

ssh.sendline('echo hello world') 
ssh.expect(shell_prompt) 

ssh.sendline('exit') 
ssh.expect(pexpect.EOF) 
[STEP 107] # python foo.py 
[STEP 108] # cat file.out 
bash-4.3# echo hello world 
hello world 
bash-4.3# exit 
exit 
Connection to 127.0.0.1 closed. 
[STEP 109] # 
0

pexpectはアプリケーションと連携するのに適しています。

しかし、あなたは単にSSHをしたいといくつかのコマンドを実行した場合、私はあなたがちょうどあなたがターミナルと対話しているときのように、lsコマンドが終了するまで待たなければならないParamiko

関連する問題