Paramiko-ожидать, тайм-аут - PullRequest
       26

Paramiko-ожидать, тайм-аут

0 голосов
/ 12 декабря 2018

Я пытаюсь выполнить процедуру автоматического резервного копирования, и все работает нормально, пока я не попытаюсь использовать ожидаемый в этой строке interact.expect("Enter choice (1-10) or q to quit: ").Я получаю ошибку raise socket.timeout(), и я думаю, что эта строка в expect неверна, хотя, если я войду в систему вручную и введу, я скопирую точную информацию из оболочки?Кто-нибудь знает решение этой проблемы?Спасибо!

import paramiko
from paramiko_expect import SSHClientInteraction
def backup():

# will match root user prompt
    root_prompt = '.*# '

# will match Password: or password:
    pass_prompt = '.*assword: '


    try:
        client = paramiko.SSHClient()
        client.load_system_host_keys() 
        client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 

        client.connect(hostname=server, username=user, password=pass)




    except paramiko.AuthenticationException:
        print("Authentication failed, please verify your credentials: %s")
    except paramiko.SSHException as sshException:
        print("Unable to establish SSH connection: %s" % sshException)
    except paramiko.BadHostKeyException as badHostKeyException:
        print("Unable to verify server's host key: %s" % badHostKeyException)
    except Exception as e:
        print(e.args)

    with SSHClientInteraction(client,timeout=10,display=True) as interact: 

        interact.send('su')
        interact.expect(pass_prompt)

        interact.send("pass")
        interact.expect(root_prompt)

        interact.send("BackupMenu")#displays specific menu for backup but menu is not using shell specific commands
        interact.expect("Enter choice (1-10) or q to quit: ")

        cmd_output_ls = interact.current_output_clean


        print cmd_output_ls


    client.close()

1 Ответ

0 голосов
/ 12 декабря 2018

Я обновил код выше для решения, которое работает.Я изменил interact.expect("Enter choice (1-10) or q to quit: ") на '.*: '.

...