我有以下有效的调用(实际上引发了 a paramiko.AuthenticationException
,这很好):
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('example.com',username='root', password="aaa", look_for_keys=False, timeout=5)
我想将参数转换为字典:
params = {
'hostname': 'example.com',
'port': 22,
'username': 'root',
'look_for_keys': False,
'timeout': 5
}
ssh.connect(params)
这引发了一个TypeError: getaddrinfo() argument 1 must be string or None
. 我检查了参数ssh.connect
>>> inspect.getargspec(ssh.connect)
ArgSpec(args=['self', 'hostname', 'port', 'username', 'password', 'pkey', 'key_filename', 'timeout', 'allow_agent', 'look_for_keys', 'compress', 'sock'], varargs=None, keywords=None, defaults=(22, None, None, None, None, None, True, True, False, None))
我的听写对我来说看起来不错。
尽管如此,由于第一次调用很好并且错误与套接字有关,我尝试过
ssh.connect('example.com', 22, params)
这引起了paramiko.SSHException: No authentication methods available
. 我将此解释为connect
没有任何密码或密钥可供测试。
我应该怎么做才能ssh.connect
接受 dict 作为参数(或者实际上 - dict 与我的相比应该有多大不同)?
还是有另一种传递参数的pythonic方法,没有“手动”构建参数字符串(通过连接字符串,这对我来说看起来很糟糕)?