Python 系统没有响应pexpect命令
我正试图编写一个非常简单的程序,用pexpect控制远程机器。但远程系统不会对发送的命令做出反应 以下是源代码:Python 系统没有响应pexpect命令,python,networking,pexpect,Python,Networking,Pexpect,我正试图编写一个非常简单的程序,用pexpect控制远程机器。但远程系统不会对发送的命令做出反应 以下是源代码: #!/usr/bin/env python3 # -*- coding: utf-8 -*- import pexpect import sys child = pexpect.spawn('telnet 192.168.2.81 24') res = child.expect('/ # ') print(res) res = child.sendline('touch foo')
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import pexpect
import sys
child = pexpect.spawn('telnet 192.168.2.81 24')
res = child.expect('/ # ')
print(res)
res = child.sendline('touch foo')
print(res)
以下是输出:
0
10
所以,据我所知,命令执行成功,但在目标系统上没有结果,即没有创建foo文件
有人能帮我吗?在
pexpect.spawn()之后添加以下行,否则您将什么也看不到
# for Python 2
child.logfile_read = sys.stdout
# for Python 3
child.logfile_read = sys.stdout.buffer
最后还需要以下语句(否则脚本将在sendline('touch foo')
之后立即退出,因此touch foo
没有机会运行):
根据手册:
logfile\u read
和logfile\u send
成员可用于分别记录子级的输入和发送到子级的输出。有时你不想看到你给孩子写的每一封信。您只想记录孩子发回的内容。例如:
child = pexpect.spawn('some_command')
child.logfile_read = sys.stdout
谢谢大家!child.sendline('exit')
和child.expect(pexpect.EOF)
工作正常。关于child.logfile\u read=sys.stdout
-它会导致错误TypeError:write()参数必须是str,而不是bytes
,但即使它有效,我也看不到任何好处,所以我想我可以忽略它,只使用与文件结尾相关的建议。发现这个:。更新了我的答案。
child = pexpect.spawn('some_command')
child.logfile_read = sys.stdout