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,如果没有会创建。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .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语句:使用策略模式优化代码结构