0
我有以下的調用,它的工作原理(實際上提出了一個paramiko.AuthenticationException
,這是很好的):的paramiko:傳遞一個字典作爲參數來連接
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
接受一個字典作爲參數(或者實際上 - 該字典應該與我的相比有多大差異)?
或者是否有另一種pythonic方式來傳遞參數,缺少構建參數字符串「手動」(通過連接字符串,這看起來很糟糕)?
簽名是否兼容,以便'ssh.connect('example.com',22,** params)'有效? –
我試過'(** params)',它開箱即用。非常感謝。你介意把你的評論變成答案,以便我能接受它嗎?另外:「簽名兼容」是什麼意思? – WoJ