我试图编写一个非常简单的程序来控制远程机器使用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文件。
有人能帮助我吗?
答案 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_read
和logfile_send
成员可用于分别记录子项的输入和发送给子项的输出。有时你不想看到你写给孩子的一切。您只想记录孩子发回的内容。例如:child = pexpect.spawn('some_command') child.logfile_read = sys.stdout