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()

()

  

代码未做异常处理,仅实现了简单的流量统计功能。