Python 交换机自动化巡检笔记

python-交换机巡检自动化

​ 因为了解到python可以实现自动化的巡检功能,所以开始学习了《Python编程 从入门到实践》。通过一段时间的学习,将这本书的前11章看完,并开始搜索交换机巡检的相关模板,发现别人写的代码完全看不懂,很多模块,根本看不懂。经过一段时间的研究,要巡检,得学会以下几个模块:time、os、Netmiko、xlwt、re。

我从开始学习到能ctrl+v出自己想要的脚本的过程如下:

《Python编程 从入门到实践》——百度大神的脚本——了解大神脚本中模块的功能——根据需求自己写脚本

接下来我们开始了解编写脚本所需要了解的模块吧

time模块——生成时间相关

import time
>>> res = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
>>> print(res)
2021-04-15 18:53:20

>>> res = time.strftime("%Y%m%d",time.localtime())
>>> print(res)
20210415

os模块的使用——创建目录

因为open模块只能创建文件,目录需要os模块来创建

import os
if not os.path.isdir("machine_learning"): 	#判定如何没有这个目录,就创建
    os.makedirs("machine_learning")			#创建

Netmiko-SSH巡检

通过ssh,巡检h3c的交换机。关键模块是ConnectHandler。

#!/usr/bin/python3
#H3c交换机
from netmiko import ConnectHandler

'''定义交换机,包括类型,密码,ip,主机名'''
ip_list = [
    ['交换机的sysname','交换机的管理地址'],
]

#这里定义了ssh要用到的参数
SW = {
    'device_type':'hp_comware',     #设备类型是netmiko预定义好的,现在用hp_comware是h3c的
    'username':'admin',
    'ip':'',
    'password':"xxxxxx"
}
'''--------定义结束-----------'''

'''-------交换机交互-----------'''
for ip_item in ip_list:
    SW['ip'] = ip_item[1]
    connect = ConnectHandler(**SW)
    print(log_time + 'Successfully connected to ' + ip_item[0])
    output = connect.send_command('system view')
    iproute = connect.send_command("display ip routing-table")
    print(output) 				#验证
    print(iproute) 				#验证
'''交换结束'''

Netmiko-telnet巡检

telnet与ssh的区别应该就在于,device_type中尾部添加_telnet,用的是Netmiko,而ssh用的是ConnectHandler。

我们的telnet分为h3c和cisco,因为telnet有个enable模式

H3C

from netmiko import Netmiko

'''定义交换机,包括类型,密码,ip,主机名'''
ip_list = [
    ['交换机的sysname','交换机的ip地址'],   #定义设备的用户名和管理地址
]
SW = {
    'device_type':'hp_comware_telnet',					#设备类型是netmiko预定义好的
    'username':'admin',
    'ip':'',
    'password':"xxxxxx",	
}
'''完成定义'''

'''与交换机交互'''
for ip_item in ip_list:
    SW['ip'] = ip_item[1]
    connect = Netmiko(**SW)
    print(log_time + 'Successfully connected to ' + ip_item[0])
    config = connect.send_command('dis cur')
    fan = connect.send_command('dis fan')
    print(config) 	#验证一下值是不是想要的
    print(fan) 		#验证一下值是不是想要的

cisco

主要的不同是,cisco的telnet是需要enable的。

from netmiko import Netmiko

'''定义交换机,包括类型,密码,ip,主机名'''
ip_list = [
    ['交换机的hostname','交换机的ip'],   #定义设备的用户名和管理地址
]
SW = {
    'device_type':'hp_comware_telnet',	#设备类型是netmiko预定义好的
    'username':'admin',
    'ip':'',
    'password':"xxxxxx",	#telnet的密码
    'secret':'xxxxx',		#enable的密码
}
'''完成定义'''

'''与交换机交互'''
for ip_item in ip_list:
    SW['ip'] = ip_item[1]
    connect = Netmiko(**SW)
    connect.enable()									#注意这个地方!cisco是这样enable的
    print(log_time + 'Successfully connected to ' + ip_item[0])
    config = connect.send_command('shun run')
    cpu = connect.send_command('sh process cpu')
    print(config) 	#验证一下值是不是想要的
    print(fan) 		#验证一下值是不是想要的

xlwt模块-创建excel

import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('巡检报告第一次') #创建worksheet
worksheet.write(0,0,label = '设备名称')		#对A1添加内容
worksheet.write(0,1,label = '属性')		#对B1添加内容
worksheet.write(0,2,'值')			#对C2添加内容
workbook.save('学习笔记.xls')			#保存到excel,如果没有会创建。

posted @   02eva  阅读(1625)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示