2024年3月13日发(作者:)
example = '''
The brief information of interface(s) under bridge mode:
Interface Link Speed Duplex Link-type PVID
GE1/0/1 UP 100M(a) full(a) access 409
GE1/0/2 UP 100M(a) full(a) access 409
GE1/0/3 DOWN auto auto access 409'''
('display brief interfacen')
(' ')
(' ')
ports_brief = _until(finish)
up_ports = []
port_info = l(r"GE1/0/(d+)(s+)(w+)",ports_brief)
for i in port_info:
if i[-1] == 'UP':
up_(i[0])
print up_ports
return tuple(up_ports)
def extract_data(port_str):
''' get the data from the result of command 'display interface GigabitEthernet 1/0/i'
'''
# (VLAN_ID, total_input, total_output, max_input, max_output)
if ('GigabitEthernet', port_str) == None:
return None
VLAN_ID_list = l(r"PVID: (d+)",port_str)
input_total_list = l(r"Input (total): (d+) packets, (d+) bytes", port_str)
output_total_list = l(r"Output (total): (d+) packets, (d+) bytes", port_str)
peak_input_list = l(r"Peak value of input: (d+) bytes/sec,", port_str);
peak_output_list = l(r"Peak value of output: (d+) bytes/sec,", port_str);
state_list = l(r"current state: (.+)",port_str)
VLAN_ID = VLAN_ID_list[0] # string
input_total = long((list(input_total_list[0]))[1]) # long
output_total = long((list(output_total_list[0]))[1]) # long
peak_input = long(peak_input_list[0]) # long
peak_output = long(peak_output_list[0]) # long
state = str(state_list[0]) # string
return (VLAN_ID, input_total, output_total, peak_input, peak_output, state)
def do_statistic():
last_input = [0] * PORT_COUNT
last_output = [0] * PORT_COUNT
last_update = ()
tn = login()
up_ports = get_up_ports(tn)
clear_screen()
print 'connected, '
while(True):
ports_str = []
# h3c s5500 g1/0/1 - g1/0/52
# input command to get output
for i in up_ports:
('display interface GigabitEthernet 1/0/' + str(i) +'n')
(' ')
port_info = _until(finish)
ports_(port_info)
# get interval
interval = (() - last_update)
if interval < MIN_INTERVAL:
(MIN_INTERVAL - interval)
interval = MIN_INTERVAL
# get data and print
clear_screen()
print "the input/output is from the port view of the switch."
print "From the user's view: input <-> download; output <-> upload."
print "the VLAN 1000 is connected to the firewall. So, it's oppositenn"
print 'PORT_NOtVLAN_IDtINPUTtOUTPUTtMAX_INtMAX_OUTtSTATE (MB)'
port_index = 0
for _port_str in ports_str:
# (VLAN_ID, total_input, total_output, max_input, max_output)
data = extract_data(_port_str)
if data == None:
continue
port_no = up_ports[port_index]
vlan_id = data[0]
speed_input = (data[1] - last_input[port_index]) / (interval * 1024 * 1024)
speed_output = (data[2] - last_output[port_index]) / (interval * 1024 * 1024)
max_input = data[3] / (1024 * 1024 )
max_output = data[4] / (1024 * 1024 )
state = data[5]
last_input[port_index] = data[1]
last_output[port_index] = data[2]
port_index += 1
# show
print port_no, 't', vlan_id, 't',float('%.2f' %speed_input), 't', float('%.2f' %speed_output), 't',
print float('%.2f' %max_input), 't' ,float('%.2f' %max_output), 't', state
last_update = ()
if __name__ == "__main__":
username = raw_input("please input username:")
password = raw_input("please input password:")
print username
print password
do_statistic()
()
代码未做异常处理,仅实现了简单的流量统计功能。


发布评论