【发布时间】: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