文章插图
4.1.3 netmiko模块netmiko是Paramiko的增强版本,专门面向网络设备 。虽然Paramiko能够处理与设备的SSH连接并判断设备类型是服务器、打印机还是网络设备,但netmiko在设计时针对网络设备做了优化,能够更有效地处理SSH连接 。netmiko还支持各种不同的设备厂商和平台 。
如果需要在远程设备上执行耗时很长的命令,就要强制Python等待一段时间,直到设备生成输出并将结果返回给Python,因此最好使用time.sleep() 。否则,Python可能得不到正确的输出结果 。
netmiko也是对Paramiko的封装,它使用许多其他增强功能扩展了Paramiko,比如使用启用的密码直接访问所支持的设备,从文件读取配置并将推送到设备,在登录期间禁用分页显示,以及默认在每条命令后面加上回车符"n" 。
1.支持的设备商netmiko支持许多供应商的设备,并定期在支持列表中添加新的供应商 。netmiko支持的供应商列表分为定期测试类、有限测试类和实验类 。在该模块的GitHub页面上可以找到这个列表 。
定期测试类中支持的供应商如下图所示 。
文章插图
有限测试类中支持的供应商如下图所示 。
文章插图
实验类中支持的供应商如下图所示 。
文章插图
2.安装和验证安装netmiko非常简单 。打开Windows命令行窗口或Linux shell,执行下面的命令就可以从PyPI获取最新版本的netmiko包(见下图) 。
pip install netmiko
文章插图
【使用Python管理网络设备】
然后,在Python shell中导入netmiko,验证模块是否正确地安装到Python site-packages中 。
$python>>>import netmiko
3.使用netmiko建立SSH连接现在该开始使用netmiko了,让我们来看看它强大的SSH功能 。首先连接到网络设备并在上面执行命令 。默认情况下,netmiko在建立会话(session)的过程中会在后台处理许多操作(如添加未知的SSH密钥主机,设置终端类型、宽度和高度),在需要的时候还可以进入特权(enable)模式,然后通过运行供应商提供的命令来禁用分页 。首先,以字典格式定义设备并提供下列5个必需的关键信息 。
R1 = ('device type ': 'cisco IOS','ip': '10.10.88.110','username': 'admin','password': 'access123','secret': 'access123',}
第一个参数是device_type,为了执行正确的命令,需要使用这个参数来定义平台供应商 。然后,需要SSH的IP地址 。如果已经使用DNS解析了IP地址,该参数可能是主机名;否则,该参数是IP地址 。接下来,提供username、password以及以secret参数传递的特权模式的密码 。注意,可以使用getpass()模块隐藏密码,并且只在脚本执行期间提示它们 。接下来,从netmiko模块导入ConnectHandler函数,并提供定义的字典来开始建立连接 。因为所有的设备是通过特权模式的密码配置的,所以需要为创建的连接提供.enable(),以在特权模式下访问 。使用.send_command()在路由器终端上执行命令,.send_command()将会执行命令并通过变量的值显示设备的输出 。
虽然变量中的密钥序列不重要,但是为了使netmiko能够正确解析字典并开始和设备建立连接,密钥的名称应该和之前示例中提供的密钥完全一样 。
from netmiko import ConnectHandlerconnection = ConnectHandler(**R1)connection.enable()output = connection.send_command("show ip int b")print output
脚本输出结果如下 。文章插图
注意,这里看到的输出结果去掉了命令行中的命令回显和设备提示符 。默认情况下,netmiko会替换设备的返回结果,使输出更加整洁,替换过程通过正则表达式完成,这部分会在下一章中介绍 。
如果不想使用这种方式,而是希望看到命令提示符,并在返回结果的后面执行命令,可以在.send_command()函数中加上以下参数 。
output = connection.send_command("show ip intb",strip_command=False,strip_prompt=False)
strip_command=False和strip_prompt=False告诉netmiko保留而不是替换命令行回显和提示符 。默认情况下它为True,可以根据需要进行设置 。
推荐阅读
- 四种Python爬虫常用的定位元素方法对比,你偏爱哪一款?
- Pyppeteer爬虫神器详解
- 6s管理包括哪六个方面?
- 出现化妆品过敏怎么办
- 《管理学原理》试卷a 2020?管理学原理试卷及答案
- 照相机的使用方法和注意事项
- ticpods2ai真无线耳机?ticpods2pro单耳使用
- 使用 Go 打造另一款简单实用的 ORM
- 使用Redis轻松实现秒杀系统
- 使用Arkime抓包,捕获解密HTTPS流量