Время ожидания истекло до окончания работы скрипта - PullRequest
0 голосов
/ 01 мая 2020

Я использую pexpect для подключения к удаленному серверу, используя s sh.

Следующий код работает, но мне нужно использовать 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')

1 Ответ

0 голосов
/ 01 мая 2020

Многие функции pexpect принимают необязательное ключевое слово timeout=, а то, которое вы указываете в spawn(), устанавливает значение по умолчанию. Например,

child.expect('admin@',timeout=70)

Вы можете использовать значение None, чтобы никогда не превышать время ожидания.

...