好吧,所以我正在尝试在我的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(它恰好与密码学库有关。)
环顾四周,我发现有两个库(enum
和enum34
)和以上
>>> import cryptography
>>> cryptography.__version__
'2.1.3'
您需要enum34
与pip正在安装的默认值(enum
)
就我个人而言,我还有另一个问题,那就是我第一次在全球安装enum34
,而不是个人安装--user
,所以我做了
pip uninstall enum
pip uninstall enum --user
pip install enum34 --user
这对我很有效,希望它能帮助