我们使用多组预定义的这里的密码测试服务器 - 我想尝试一种便携式的Python SSH库(类似下面 - spur.py),并得到它的每一个尝试连续 - 但显然停止时,它是成功连接或无法连接 - 请求我输入密码。我想了解异常处理后的某种递归。我如何在Python中递归地尝试不同的SSH密码?
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世界我会检查对象是否为空,并遍历列表直到结束,然后要求输入密码。我看不出如何做到这一点在Python ......这是我发现的列表一部分的例子:
passwords = ['abc123', 'abc456', 'abc789']
for password in passwords: # Second Example
print 'trying password :', password
在函数的except部分,只返回'None'而不是'print'和'raise',然后遍历它检查值是否为'None'。 – 2013-03-20 14:12:48
你为什么同时使用sshkeys和密码? – 2013-03-20 14:46:42
@JonathanVanasco脚本的其余部分将SSH密钥部署到服务器,所以这就是为什么我尝试使用多重密码 - 以获得无密码登录。 – dueyfinster 2013-03-20 14:58:52