Paramiko Python:没有Paramiko.transport的处理程序-Getting TypeError



好吧,所以我正在尝试在我的python脚本中实现paramiko
目的是连接到同一局域网中的另一台电脑,并通过python执行命令。

我的python版本:

Python 2.7.6 (default, Oct 26 2016, 20:30:19) 
[GCC 4.8.4] on linux2

我这里有一个基本代码:

import paramiko
client = paramiko.SSHClient()
host = '192.168.xx.xx'
username = 'username'
password = 'password'
client.connect(host, username=username, password=password)
stdin, stdout, stderr = client.exec_command('ls')
for line in stdout:
print('... ' + line.strip('n'))
client.close()

但后来我得到了以下错误:

No handlers could be found for logger "paramiko.transport"
Traceback (most recent call last):
File "testbed.py", line 8, in <module>
client.connect(host, username=username, password=password)
File "/usr/local/lib/python2.7/dist-packages/paramiko/client.py", line 385, in connect
t.start_client(timeout=timeout)
File "/usr/local/lib/python2.7/dist-packages/paramiko/transport.py", line 543, in start_client
raise e
TypeError: 'type' object is not iterable

在我的情况下,错误并没有说明太多

因此,首先我通过在脚本顶部添加来处理No handlers could be found for logger "paramiko.transport"

import logging
logging.getLogger('paramiko.transport').setLevel(logging.DEBUG)
paramiko.util.log_to_file("/tmp/example.log")   <= to redirect the logs to a file

然后我cat /tmp/example.log发现了这个错误https://github.com/pyca/cryptography/issues/4010(它恰好与密码学库有关。)

环顾四周,我发现有两个库(enumenum34)和以上

>>> import cryptography
>>> cryptography.__version__
'2.1.3'

您需要enum34与pip正在安装的默认值(enum)

就我个人而言,我还有另一个问题,那就是我第一次在全球安装enum34,而不是个人安装--user,所以我做了

pip uninstall enum
pip uninstall enum --user
pip install enum34 --user

这对我很有效,希望它能帮助

最新更新