我目前正在通过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'
答案 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上看到。
埃里克