python - 如何在 Python 中递归尝试不同的 SSH 密码?

标签 python

我们在这里为测试服务器使用多组预定义密码 - 我想尝试一个可移植的 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/

相关文章:

python - 对 Django 对 MVC 的要求感到困惑,它到底是什么?

python - 不同机器上的 RabbitMQ 代理

python - 如何在我的 python 代码中为 Pytorch (IPEX) 启用英特尔扩展?

python - 在使用scrapy进行网络抓取时进行调试?

python - Mysql 连接器错误 1064 - 使用 URL 更新

python - Celery 动态队列创建和路由

python - 如何使用psycopg3创建数据库?

python - pip 不会在 venv 中安装模块

python - 在 Tkinter 中存储来自文本字段的输入

Python 应用程序因 "PyEval_RestoreThread: the function must be called with the GIL held, but the GIL is released"崩溃