Python 系统没有响应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')

我正试图编写一个非常简单的程序,用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')
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