Python pexpect 脚本 运行 没有错误,但输出文件中没有输出

Python pexpect scripts run without error,but there are no outputs in output file

我想通过ssh.So将'ls /home'的结果放入mylog1.txt,我可以在我的computer.When我的运行脚本上查看,没有错误,mylog1.txt没有输出。

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

child=pexpect.spawn('ssh shiyanlou@192.168.42.2')
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                                                                                    
shiyanlou@192.168.42.2's password: xxxxxxx 
ls /home

mylog1.txt file.Why?

中只有两个命令

pexpect 很适合与应用程序交互。

但是如果你只是想要 ssh 并执行一些命令,我​​会建议你尝试 Paramiko

您必须等到 ls 命令完成,就像您与终端交互时一样。请参阅以下示例(我正在使用 public 密钥验证 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] #