我有一个脚本,该脚本循环遍历十二个主机,并在每个主机中执行多个功能。这些函数将SSHClient()作为参数,然后在其上执行命令。

我可以简单地在SSHClient()上设置一些属性,但是在此之前,是否已经有一种方法可以从SSHClient()实例中确定当前正在连接到哪个主机?

for host in hosts:
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(host, username=USERNAME)
    f1(ssh)
    f2(ssh)
    ...

最佳答案

使用Client的ssh变量,就像已经完成的那样:

ssh.get_transport().getpeername()


这将返回一个('ip address', portnumber)元组

够了吗?在查看paramiko / client.py的源代码时,它似乎没有保留connect()的主机名参数值的记录,而是使用socket.getaddrinfo查找地址,然后将结果传递给传输,这是getpeername()的要求。

关于python - Paramiko-如何判断SSHClient当前连接到哪个主机?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35025151/

10-12 20:22