【问题标题】:Paramiko-expect , timing outParamiko-expect,超时
【发布时间】:2018-12-14 18:27:35
【问题描述】:

我正在尝试执行自动备份过程并且一切正常,直到我尝试在此行上使用期望 interact.expect("Enter choice (1-10) or q to quit: ")。我得到的错误是raise socket.timeout() 并且我认为是由expect 中的那个字符串不正确引起的,尽管如果我手动登录并输入我会从shell 中复制确切的内容?有人知道解决这个问题吗?谢谢!

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()

【问题讨论】:

  • 您无法编辑您的问题以显示正确的代码。这不再是一个问题了。 - 我正在恢复编辑。

标签: python python-2.7 ssh paramiko


【解决方案1】:

我已将上面的代码更新为可行的解决方案。我将interact.expect("Enter choice (1-10) or q to quit: ") 更改为'.*: '

【讨论】:

  • 问题可能是圆括号在正则表达式中具有特殊含义。你必须用反斜杠转义它们才能使用文字括号。
  • 完成备份后,它将转到root_prompt,但一直超时。唯一的解决方案是在提示之前期待这一行,但这不允许我输入 exit 甚至另一个命令来测试命令是否已完成。你能expect两次吗?
猜你喜欢
  • 2016-08-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-03
  • 2014-12-28
  • 2014-08-22
  • 1970-01-01
  • 2016-05-25
  • 2014-10-05
相关资源
最近更新 更多