pexpect - pexpect 在脚本结束前超时
问题描述
我正在使用 pexpect 使用 ssh 连接到远程服务器。
以下代码有效,但我必须使用 time.sleep 进行延迟。
特别是当我发送命令以在远程服务器上运行脚本时。
该脚本最多需要一分钟才能运行,如果我不使用 60 秒延迟,那么该脚本将提前结束。
当我使用 sftp 下载文件时,同样的问题。如果文件很大,则部分下载。
有没有办法在不使用延迟的情况下进行控制?
#!/usr/bin/python3
import pexpect
import time
from subprocess import call
siteip = "131.235.111.111"
ssh_new_conn = 'Are you sure you want to continue connecting'
password = 'xxxxx'
child = pexpect.spawn('ssh admin@' + siteip)
time.sleep(1)
child.expect('admin@.* password:')
child.sendline('xxxxx')
time.sleep(2)
child.expect('admin@.*')
print('ssh to abcd - takes 60 seconds')
child.sendline('backuplog\r')
time.sleep(50)
child.sendline('pwd')
解决方案
许多 pexpect 函数采用可选timeout=
关键字,而您给出的关键字spawn()
设置默认值。例如
child.expect('admin@',timeout=70)
您可以使用该值None
永不超时。
推荐阅读
- r - How to set the fontsize of a table footnote
- javascript - Angular, set dynamic style to button (hover)
- android - 如何访问 RecyclerView 位置
- rust - How to get the local time zone name in Rust?
- mule - creating an XML attribute from var in dataweave 2.0
- java - input arabic characters with scanner in maven project
- c++ - Why does this very simple and little C++ program terminates with -1073741819 (0xC0000005)?
- python - print all topic in the print version
- javascript - javascript array turns to be undefined
- python - 列表问题;TypeError:“int”对象不可下标