使用Python3 ncclient / paramiko时出错?

时间:2018-04-06 18:35:23

标签: python-3.x paramiko

我目前正在通过Eric Chou编写的一本名为Mastering Python网络的书(我是网络工程师)。

其中一个示例提供了使用netconf连接到Cisco Nexus设备的示例代码,但在尝试连接时,我收到的错误与以下相关:

  

AttributeError:'_ RSAPublicKey'对象没有属性'verify'

有人可以就可能出现的问题提出建议。

我在Ubuntu 16.04 LTS上安装了最新版本的Python3,并按照本书中的说明下载并安装了最新版本的ncclient。

顺便提一下,我连接到Cisco Devnet Nexus NX-API沙盒模拟器,也使用下面代码中的凭据显示手动ssh终端连接正常工作。

运行以下代码:

from ncclient import manager
conn=manager.connect(
 host='sbx-nxos-mgmt.cisco.com',
 port=8181,
 username='admin',
 password='Admin_1234!',
 hostkey_verify=False,
 device_params={'name': 'nexus'},
 look_for_keys=False
)

我收到以下错误:

  

未知异常:'_ RSAPublicKey'对象没有属性'verify'   Traceback(最近一次调用最后一次):文件   “/usr/local/lib/python3.5/dist-packages/paramiko/transport.py”,一行   1925年,在奔跑       self.kex_engine.parse_next(ptype,m)文件“/usr/local/lib/python3.5/dist-packages/paramiko/kex_ecdh_nist.py”,   第47行,在parse_next中       return self._parse_kexecdh_reply(m)File“/usr/local/lib/python3.5/dist-packages/paramiko/kex_ecdh_nist.py”,   第107行,在_parse_kexecdh_reply中       self.transport._verify_key(K_S,sig)文件“/usr/local/lib/python3.5/dist-packages/paramiko/transport.py”,行   1750年,在_verify_key中       如果不是key.verify_ssh_sig(self.H,Message(sig)):文件“/usr/local/lib/python3.5/dist-packages/paramiko/rsakey.py”,第127行,   在verify_ssh_sig中       key.verify(AttributeError:'_ RSAPublicKey'对象没有属性'verify'

     

回溯(最近一次呼叫最后一次):文件“”,第8行,中      文件   “/usr/local/lib/python3.5/dist-packages/ncclient-0.5.3-py3.5.egg/ncclient/manager.py”   第155行,在连接文件中   “/usr/local/lib/python3.5/dist-packages/ncclient-0.5.3-py3.5.egg/ncclient/manager.py”   第120行,在connect_ssh文件中   “/usr/local/lib/python3.5/dist-packages/ncclient-0.5.3-py3.5.egg/ncclient/transport/ssh.py”,第409行,在连接文件中   “/usr/local/lib/python3.5/dist-packages/paramiko/transport.py”,一行   545,在start_client中       提出e文件“/usr/local/lib/python3.5/dist-packages/paramiko/transport.py”,行   1925年,在奔跑       self.kex_engine.parse_next(ptype,m)文件“/usr/local/lib/python3.5/dist-packages/paramiko/kex_ecdh_nist.py”,   第47行,在parse_next中       return self._parse_kexecdh_reply(m)File“/usr/local/lib/python3.5/dist-packages/paramiko/kex_ecdh_nist.py”,   第107行,在_parse_kexecdh_reply中       self.transport._verify_key(K_S,sig)文件“/usr/local/lib/python3.5/dist-packages/paramiko/transport.py”,行   1750年,在_verify_key中       如果不是key.verify_ssh_sig(self.H,Message(sig)):文件“/usr/local/lib/python3.5/dist-packages/paramiko/rsakey.py”,第127行,   在verify_ssh_sig中       key.verify(AttributeError:'_ RSAPublicKey'对象没有属性'verify'

2 个答案:

答案 0 :(得分:0)

更新

我还联系了我工作的书的作者(Eric Chou(掌握Python网络))。 Eric好心地回复说明了他为复制代码所采取的步骤以及他在Ubuntu主机上安装的相关依赖项。

一旦我(重新)在我的Ubuntu主机上安装了相同的软件包/依赖项列表,代码工作/错误被清除,所以我显然已经遗漏了下面的一个或多个。

如果有人遇到类似的话,我采取了以下步骤来修复我看到的错误:

sudo apt-get install -y python3-dev libxml2-dev libxslt1-dev libffi-dev libssl-dev zlib1g-dev python3-pip git python3-requests
cd ncclient/
ncclient$ sudo python3 setup.py install

答案 1 :(得分:0)

只是上次更新的后续注释,目录ncclient是从以下git存储库克隆的:

$ git clone https://github.com/ncclient/ncclient
$ cd ncclient/
$ sudo python3 setup.py install

思科客户端脚本可以在本书github repo https://github.com/PacktPublishing/Mastering-Python-Networking/blob/master/Chapter03/Cisco/cisco_nxapi_1.py上看到。

埃里克