pexpect логины, а затем отображается другое приглашение, и ничего не отправляется. Я предполагаю, что он не соответствует - PullRequest
0 голосов
/ 19 декабря 2018

Второе приглашение - Выбрать номер меню [0-2]: но для этого ничего не отображается, и я попытался выполнить p.expect («Выбрать номер меню [0-2]:»), который не работает. IЯ думаю, что мне нужно выражение регулярного выражения, чтобы соответствовать этому, просто не уверен, что.

Я попытался использовать time.sleep на случай, если это было связано с не выводом в SSH, я попытался # и некоторые примеры отключеныв интернете ничего не работает.Это работает на сервере Ubuntu 18.10

#!/usr/bin/env python

import pexpect
import struct, fcntl, os, sys, signal
import time

def sigwinch_passthrough (sig, data):
    # Check for buggy platforms (see pexpect.setwinsize()).
    if 'TIOCGWINSZ' in dir(termios):
        TIOCGWINSZ = termios.TIOCGWINSZ
    else:
        TIOCGWINSZ = 1074295912 # assume
    s = struct.pack ("HHHH", 0, 0, 0, 0)
    a = struct.unpack ('HHHH', fcntl.ioctl(sys.stdout.fileno(), TIOCGWINSZ , s))
    global global_pexpect_instance
    global_pexpect_instance.setwinsize(a[0],a[1])

ssh_newkey = 'Are you sure you want to continue connecting'
p=pexpect.spawn('ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 admin@172.16.16.16')
i=p.expect([ssh_newkey,'password:',pexpect.EOF,pexpect.TIMEOUT],1)
if i==0:
    p.sendline('yes')
    i=p.expect([ssh_newkey,'password:',pexpect.EOF])
if i==1:
    p.sendline("admin")
    p.sendline("6")
    p.expect([pexpect.TIMEOUT,r'\b below.\b'])
    p.sendline("2")
elif i==2:
    print "Key or timeout"
    pass
elif i==3: #timeout
    pass
p.sendline("\r")
global global_pexpect_instance
global_pexpect_instance = p
signal.signal(signal.SIGWINCH, sigwinch_passthrough)

try:
    p.interact()
    sys.exit(0)
except:
    sys.exit(1)

Я хотел бы иметь возможность ввести номер 2 в приглашении, которое называется Выберите номер меню [0-2]: это позволит мне перезапуститьvpn в автоматическом режиме, я буду запускать этот скрипт при сбое в пинге.

...