系统没有响应pexpect命令

时间:2017-10-31 09:57:30

标签: 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')
print(res)

这是输出:

0
10

所以,据我所知,命令执行成功但目标系统没有结果,即没有创建foo文件。

有人能帮助我吗?

1 个答案:

答案 0 :(得分:2)

pexpect.spawn()之后添加以下行,否则您将看不到任何内容。

# for Python 2
child.logfile_read = sys.stdout

# for Python 3
child.logfile_read = sys.stdout.buffer

最后还需要以下语句(否则脚本会在sendline('touch foo')之后立即退出,因此touch foo无法运行):

child.sendline('exit')
child.expect(pexpect.EOF)

根据手册:

  

logfile_readlogfile_send成员可用于分别记录子项的输入和发送给子项的输出。有时你不想看到你写给孩子的一切。您只想记录孩子发回的内容。例如:

child = pexpect.spawn('some_command')
child.logfile_read = sys.stdout