预期在脚本结束前超时
pexpect timed out before script ends
我正在使用 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
永不超时。
我正在使用 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
永不超时。