我们在这里为测试服务器使用多组预定义密码 - 我想尝试一个可移植的 Python SSH 库(如下面的 - spur.py)并让它连续尝试每一个 - 但显然当它停止时已成功连接或无法连接 - 请向我询问密码。我正在使用我认为的异常处理进行某种递归。
def ssh_connection(user, host):
try:
shell = spur.SshShell(
hostname=host,
port=findport(host),
username=user,
password="abc123",
private_key_file= expanduser("~") + "/.ssh/id_rsa",
missing_host_key=spur.ssh.MissingHostKey.accept
)
shell.run(["true"])
return shell
except spur.ssh.ConnectionError as error:
print error
raise
来自 Java 世界,我会检查对象是否为 null 并遍历列表直到结束,然后询问密码。我看不到如何在 Python 中执行此操作...这是我为列表部分找到的示例:
passwords = ['abc123', 'abc456', 'abc789']
for password in passwords: # Second Example
print 'trying password :', password
最佳答案
正如 Joe 在评论中提到的,您可以做类似的事情:
def ssh_connection(user, host, passwords):
err = None
for password in passwords:
try:
shell = spur.SshShell(
hostname=host,
port=findport(host),
username=user,
password=password,
private_key_file= expanduser("~") + "/.ssh/id_rsa",
missing_host_key=spur.ssh.MissingHostKey.accept
)
shell.run(["true"])
return shell
except spur.ssh.ConnectionError as error:
err = error
if err:
raise error
关于python - 如何在 Python 中递归尝试不同的 SSH 密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15525838/