记录一次自动化运维脚本,在统计DHCP地址池时,从设备导出的cvs文件包含大量地址池信息,于是决定采用python将其筛出相关信息。
原理
DHCP冗余实现方法:
一般来说,DHCP中继是向所有DHCP服务器转发DHCP请求报文(即polling方式),且DHCP客户端会选择最快收到DHCP应答报文。如果用户想指定一台DHCP服务器作为主用DHCP服务器,其他DHCP服务器只在主用DHCP服务器不可用或没有空闲地址时才起作用,就需要DHCP中继支持优先选择用户期望的DHCP服务器作为主用DHCP服务器的功能。
当DHCP中继使用主备方式选择DHCP服务器后,会优先向配置的第一个DHCP服务器地址转发DHCP请求报文。当该DHCP服务器确定无法分配IP地址时,DHCP中继将之后的DHCP请求报文向下一个DHCP服务器地址转发。如果DHCP中继已切换到配置的最后一个DHCP服务器地址且发现该DHCP服务器仍不可用,则重新选择第一个配置的DHCP服务器地址进入下一个循环。
主备方式有两种配置方法:
对于普通组网,用户可以在DHCP中继接口上指定多个DHCP服务器地址。这样当配置DHCP中继主备方式选择DHCP服务器时,配置的第一个地址对应的DHCP服务器为主用DHCP服务器,之后配置的地址对应的DHCP服务器为备用DHCP服务器。
对于某些用户接入方式,用户需配置中继地址池,并指定多个DHCP服务器地址。这样当配置DHCP中继主备方式选择DHCP服务器时,配置的第一个地址对应的DHCP服务器为主用DHCP服务器,之后配置的地址对应的DHCP服务器为备用DHCP服务器。
此外,配置DHCP中继选择DHCP服务器还支持配置以下功能:
配置DHCP服务器应答超时切换时间,缺省应答超时切换时间为30秒。当DHCP中继向DHCP服务器转发DHCP请求报文,如果超过配置的应答超时切换时间后还未收到该DHCP服务器的应答报文,则DHCP中继认为该DHCP服务器已不可用,并切换到下一个DHCP服务器。
配置回切主用DHCP服务器并指定回切延迟时间,缺省DHCP中继是不回切的。当用户在DHCP中继配置了回切主用DHCP服务器延迟时间且当前生效的不是主用DHCP服务器时,经过该回切延迟时间后,DHCP服务器会将DHCP请求报文转发到主用DHCP服务器。如果主用DHCP服务器不可用或没有空闲地址时则重新使用当前生效的DHCP服务器;如果主用DHCP服务器可用则继续使用主用DHCP服务器。
xlrd+xlwt库是python中一个很常用的读写excel文件的库,其对excel文件的读写可以实现比较精细的控制。
pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能。
环境
1、Python
2、Windows
3、Office
源码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import time
import xlrd
import xlwt
import pandas as pd
def get_font():
font = xlwt.Font()
font.name = 'Arial'
font.colour_index = 0
font.height = 20 * 15
font.bold = True
font.underline = False
font.italic = False
return font
def get_borders():
borders = xlwt.Borders()
borders.left = 2
borders.right = 2
borders.top = 2
borders.bottom = 2
borders.left_colour = 0
borders.right_colour = 0
borders.top_colour = 0
borders.bottom_colour = 0
return borders
def csv_change_xlsx():
csv = pd.read_csv(r'CSV\dl-dc00_Config.csv', encoding='utf-8')
def demand():
_dl0 = xlrd.open_workbook(r'EXCEL\dl-dc00_Config.xlsx')
workbook = xlwt.Workbook(encoding = 'utf-8')
worksheet = workbook.add_sheet('work_sheet')
dl0 = _dl0.sheet_by_index(0)
style_font = xlwt.XFStyle()
style_font.font = get_font()
style_font.borders = get_borders()
worksheet.write(0,1,'ScopeId',style_font)
worksheet.col(1).width = 256 * 20
total_row=1
for dl0_row in range(dl0.nrows):
if dl0_row == 0:
continue
dl0_StartRange = dl0.row_values(dl0_row)[3]
dl0_ndRange = dl0.row_values(dl0_row)[4]
StartRange_dl0 = int(dl0_StartRange.split('.')[3])
ndRange_dl0 = int(dl0_ndRange.split('.')[3])
if (StartRange_dl0 != 141 or ndRange_dl0 != 240) and (StartRange_dl0 != 31 or ndRange_dl0 != 140):
dl0_list=(dl0.row_values(dl0_row))
for dl0_rank in range(dl0.ncols):
worksheet.write(total_row,dl0_rank,dl0_list[dl0_rank])
total_row=total_row+1
workbook.save('Excel_Summary.xls')
if __name__ == '__main__':
startTimes = time.time()
csv_change_xlsx()
demand()
endTimes = time.time()
times = endTimes - startTimes
print('共耗时:' + repr(times) + '秒')
参考来源
H3C-DHCP配置手册
xlrd模块详解
python之xlwt模块列宽width、行高Heights详解
Python xlwt颜色代码
Xlwt-样式详解