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] #
我想通过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] #