您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
网络设备管理(Python自动化运维实战:使用Python管理网络设备)
脚本,设备,地址网络设备管理(Python自动化运维实战:使用Python管理网络设备)
发布时间:2020-12-06加入收藏来源:互联网点击:
通过在提示符中输入health尝试脚本中的第一条命令。脚本输出结果如下。
可以看到,脚本将返回在设备上执行多条命令后的结果。
接着试一下第二个命令discover。脚本输出结果如下。
这次脚本返回discover命令的输出。在后面的章节中,我们将会解析返回的输出结果并从中提取有用的信息。
4.4.3 从Excel工作表中读取数据网络和IT工程师始终使用Excel工作表来存储基础设施的相关信息,如IP地址、设备供应商和登录凭证。Python支持从Excel工作表中读取数据并对其进行处理,以便我们在脚本中使用数据。
在这个用例中,我们将使用Excel Read(xlrd)模块读取UC3_devices.xlsx文件。该文件保存了基础设施的主机名、IP地址、用户名、普通密码、特权模式下的密码和供应商名称。然后将读到的数据用作netmiko模块的输入。
Excel工作表中的内容如下图所示。
首先,用pip安装xlrd模块,因为需要用它来读取Microsoft Excel工作表。
pip install xlrd
xlrd模块能够读取Excel工作表并将行和列转换为矩阵。比如,row[0][0]代表第一行第一列的单元格,右边紧接着它的单元格是row[0][1](见下图),以此类推。
xlrd在读取工作表时,每次读取一行,同时特殊计数器nrows(行数)自动加1。同样,每次读取一列,ncols(列数)自动加1,这样我们就能够通过这两个参数知道矩阵的大小。
然后,在xlrd的open_workbook()函数中输入文件路径,并用sheet_by_index()或sheet_by_name()函数访问工作表。在本例中,数据存储在第一个工作表(index = 0)中,工作表文件存储在以章为名的文件夹下。接着,遍历工作表的每一行,或者使用row()函数来访问指定行。返回的输出结果是一个列表,使用索引可以访问列表中的元素。
Python脚本如下。
__author__ = "Bassim Aly"__EMAIL__ = "basim.alyy@gmail.com"from netmiko import ConnectHandlerfrom netmiko.ssh_exception import AuthenticationException,NetMikoTimeoutExceptionimport xlrdfrom pprint import pprintworkbook =xlrd.open_workbook(r"/media/bassim/DATA/GoogleDrive/Packt/EnterpriseAutomationProject/Chapter4_Using_Python_to_manage_network_devices/UC3_devices.xlsx")sheet = workbook.sheet_by_index(0)for index in range(1, sheet.nrows): hostname = sheet.row(index)[0].value ipaddr = sheet.row(index)[1].value username = sheet.row(index)[2].value password = sheet.row(index)[3].value enable_password = sheet.row(index)[4].value vendor = sheet.row(index)[5].value device = { 'device_type': vendor, 'ip': ipaddr, 'username': username, 'password': password, 'secret': enable_password, } # pprint(device) print "########## Connecting to Device {0}############".format(device['ip']) try: net_connect = ConnectHandler(**device) net_connect.enable() print "***** show ip configuration of Device *****" output = net_connect.send_command("show ip int b") print output net_connect.disconnect() except NetMikoTimeoutException: print "=======SOMETHING WRONG HAPPEN WITH{0}=======".format(device['ip']) except AuthenticationException: print "=======Authentication Failed with{0}=======".format(device['ip'])except Exception as unknown_error: print "=======SOMETHING UNKNOWN HAPPEN WITH {0}======="
4.4.4 其他用例
使用netmiko可以实现很多网络自动化用例。例如,在升级期间从远程设备上传/下载文件,利用Jinja2模板加载配置,访问终端服务器,访问终端设备等。要了解更多用例,请参见GitHub官网(见下图)。
4.5 小结在本章中,我们开始使用Python进入网络自动化世界。本章讨论了Python中的一些工具,通过Telnet和SSH建立到远程节点的连接,并在远程设备上执行命令。此外,本章还讲述了如何在netaddr模块的帮助下处理IP地址和网络子网。最后通过两个实际用例巩固了这些知识。
本文摘自:《Python自动化运维实战》
运维工程师教程书籍,自动化运维实践通过Python模块、库与工具自动配置和管理大量服务器的讲解,提高运维的效率《Python自动化运维实战》介绍了如何通过Python来自动完成服务器的配置与管理,自动完成系统的管理任务(如用户管理、数据库管理和进程管理),以及完成这些工作所需的模块、库和工具。此外,本书还讲述了如何使用Python脚本自动执行测试,如何通过Python在云基础设施和虚拟机上自动执行任务,如何使用基于Python的安全工具自动完成与安全相关的任务。
本书适合运维人员和开发人员阅读,也可作为相关专业人士的参考书。
本文到此结束,希望对大家有所帮助呢。
上一篇:防盗窗价格(防盗窗是铝合金好还是不锈钢好 ,铝合金防盗窗多少钱一平方?)
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |