我有一个脚本,该脚本循环遍历十二个主机,并在每个主机中执行多个功能。这些函数将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/