上一篇博客写到如何运行脚本导出设备信息,这一篇介绍一下怎样在海量的设备信息中提取指定信息,本文中假设要提取的信息有设备名称、当前软件版本、设备运行时间、设备 CPU 使用率、设备内存使用率、设备序列号。后续可以根据这些信息使用 Python 脚本写入到巡检报告或者表格中。
如何操作
- 没有提取前已导出的设备信息(保护隐私,使用 HCL 模拟器产生的设备信息)
Python 脚本
# Author:KIRASTER
# Time:2021/3/21 23:26
# Description:Device_info
import os
import re
filename = 'F:/111.txt'
resultfilename = 'F:/result.txt'
if os.path.exists(resultfilename):
os.remove(resultfilename)
result_txt = open('F:/result.txt', 'a')
with open(filename, 'r', encoding='utf8') as file_to_read:
while True:
lines = file_to_read.readline()
# 首行显示50个“=”号,提取设备版本信息,开头注释
if "display version" in lines:
result_line01 = '=' * 50 + '\n'
result_line02 = 'Device Name:\t' + ''.join(re.findall(r'[<](.*?)[>]', lines)) + '\n'
result_txt.write(result_line01)
print(result_line01)
print(result_line02)
result_txt.write(result_line02)
# 提取设备版本信息
if "Comware Software" in lines:
result_line03 = 'Comware Software:\t' +''.join(re.findall('(?<=Software, ).*$', lines)) + '\n'
print(result_line03)
result_txt.write(result_line03)
# 提取设备运行时间
if "uptime is" in lines:
result_line04 = 'Uptime:\t' + ''.join(re.findall('(?<=uptime is ).*$', lines)) + '\n'
print(result_line04)
result_txt.write(result_line04)
# 提取设备序列号
if "DEVICE_SERIAL_NUMBER" in lines:
result_line05 = 'SN:\t' + ''.join(re.findall('(?<=:).*$', lines)) + '\n'
result_line05 = result_line05.replace(' ', '')
print(result_line05)
result_txt.write(result_line05)
# 提取设备cpu使用率方式1
if "Slot 1 CPU 0 CPU usage:" in lines:
result_line06 = next(file_to_read)
result_line06 = result_line06[5:9] + '\n'
result_line06 = 'cpu-usage:\t' + result_line06.replace(' ', '')
print(result_line06)
result_txt.write(result_line06)
# 提取设备cpu使用率方式2
if "Slot 1 CPU usage:" in lines:
result_line066 = next(file_to_read)
result_line066 = result_line066[5:9] + '\n'
result_line066 = 'cpu-usage:\t' + result_line066.replace(' ', '')
print(result_line066)
result_txt.write(result_line066)
# 提取设备cpu使用率方式3
if "Unit CPU usage:" in lines:
result_line0666 = next(file_to_read)
result_line0666 = result_line0666[5:9] + '\n'
result_line0666 = 'cpu-usage:\t' + result_line0666.replace(' ', '')
print(result_line0666)
result_txt.write(result_line0666)
# 提取设备memory使用率方式1
if "Used Rate" in lines:
result_line07 = lines[-4:]
result_line07 = 'memory-usage:\t' + result_line07.replace(' ', '')
print(result_line07)
result_txt.write(result_line07)
# 提取设备memory使用率方式2
if "Mem:" in lines:
result_line08 = lines[-6:]
result_line08 = result_line08.replace(' ', '')
result_line08 = result_line08.replace('%', '')
result_line08 = 100 - float(result_line08)
result_line08 = '%.1f%%' % result_line08
result_line08 = 'memory-usage:\t' + result_line08 + '\n'
print(result_line08)
result_txt.write(result_line08)
result_txt.flush()
if "结束记录时间" in lines:
break
生成信息
其他
- 本文中的脚本在实际工作中使用过,设备包含华三 V5 和 V7 版本的交换机、防火墙和无线控制器等
- 根据实际需要可以修改脚本中的内容提取更多信息
- 生成的文件为 word 或 excel 等都是可以实现的