【发布时间】:2021-08-06 23:01:30
【问题描述】:
我无法获得 pexpect 的 EOF 输出。
import pexpect
session = pexpect.spawn('scp -C -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -r /tmp/test abcuser@x.x.x.x:/tmp', encoding='utf-8')
session.expect(pexpect.EOF, timeout=None)
[CTRL + C] - 等了很久
^CTraceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3/dist-packages/pexpect/spawnbase.py", line 340, in expect
return self.expect_list(compiled_pattern_list,
File "/usr/lib/python3/dist-packages/pexpect/spawnbase.py", line 369, in expect_list
return exp.expect_loop(timeout)
File "/usr/lib/python3/dist-packages/pexpect/expect.py", line 111, in expect_loop
incoming = spawn.read_nonblocking(spawn.maxread, timeout)
File "/usr/lib/python3/dist-packages/pexpect/pty_spawn.py", line 470, in read_nonblocking
r, w, e = select_ignore_interrupts(
File "/usr/lib/python3/dist-packages/pexpect/utils.py", line 143, in select_ignore_interrupts
return select.select(iwtd, owtd, ewtd, timeout)
KeyboardInterrupt
【问题讨论】:
-
也许
scp正在提问并等待输入。 -
您可以导入
sys,然后将logfile=sys.stdout添加到 spawn 调用以查看 pexpect 记录的内容。 -
看起来当它询问密码时它只是等待,所以没有显示 EOF,但是当我之后执行 session.sendline 时,它显示 0 ......所以认为这很好。谢谢大家的建议。
标签: python python-3.x expect pexpect