简体   繁体   English

我想用 python 检查物理端口冗余检查

[英]I would like to check physical ports redunducy check with python

  1. would like to check physical network ports with python scripts想用 python 脚本检查物理网络端口

  2. ports information as following, Python scripts can check if ServerID has 2 or more physical network lines to differents network devices.端口信息如下,Python 脚本可以检查 ServerID 是否有 2 个或更多物理网络线路到不同的网络设备。

ServerID,NetworkID,Port name服务器ID、网络ID、端口名称

Server_1,NW_1,ge-0/0/8服务器_1,NW_1,ge-0/0/8

Server_2,NW_2,ge-0/0/5服务器_2,NW_2,ge-0/0/5

Server_3,NW_3,Ethernet7/15 Server_3,NW_3,Ethernet7/15

Server_4,NW4,ae4 Server_4,NW4,ae4

Server_4,NW4,ge-2/2/0 Server_4,NW4,ge-2/2/0

Server_4,NW4,ge-2/2/1 Server_4,NW4,ge-2/2/1

Server_4,NW4,ge-2/2/2 Server_4,NW4,ge-2/2/2

Server_4,NW4,ge-2/3/0 Server_4,NW4,ge-2/3/0

Server_4,NW4,ge-2/3/1 Server_4,NW4,ge-2/3/1

Server_10,NW5,ae4服务器_10,NW5,ae4

Server_10,NW5,ge-2/2/0 Server_10,NW5,ge-2/2/0

Server_10,NW5,ge-2/2/1 Server_10,NW5,ge-2/2/1

Server_10,NW5,ge-2/2/2 Server_10,NW5,ge-2/2/2

Server_10,NW5,ge-2/3/0 Server_10,NW5,ge-2/3/0

Server_10,NW5,ge-2/3/1 Server_10,NW5,ge-2/3/1

Server_16,NW6,ae5服务器_16,NW6,ae5

Server_16,NW6,ge-2/2/3 Server_16,NW6,ge-2/2/3

Server_16,NW6,ge-2/2/4 Server_16,NW6,ge-2/2/4

Server_16,NW6,ge-2/2/5 Server_16,NW6,ge-2/2/5

Server_16,NW6,ge-2/3/2 Server_16,NW6,ge-2/3/2

Server_16,NW6,ge-2/3/3 Server_16,NW6,ge-2/3/3

Server_22,NW7,ae5服务器_22,NW7,ae5

Server_22,NW7,ge-2/2/3 Server_22,NW7,ge-2/2/3

Server_22,NW7,ge-2/2/4 Server_22,NW7,ge-2/2/4

Server_22,NW7,ge-2/2/5 Server_22,NW7,ge-2/2/5

Server_22,NW7,ge-2/3/2 Server_22,NW7,ge-2/3/2

Server_22,NW7,ge-2/3/3 Server_22,NW7,ge-2/3/3

Server_28,NW8,ge-8/0/0 Server_28,NW8,ge-8/0/0

Server_28,NW9,ge-8/0/0 Server_28,NW9,ge-8/0/0

Server_30,NW10,ge-0/0/2 Server_30,NW10,ge-0/0/2

Server_30,NW11,ge-0/0/3 Server_30,NW11,ge-0/0/3

Server_32,NW12,ge8服务器_32,NW12,ge8

Server_32,NW13,ge-0/0/2 Server_32,NW13,ge-0/0/2

Server_34,NW13,ge-0/0/3 Server_34,NW13,ge-0/0/3

Server_35,NW14,Ethernet1/3 Server_35,NW14,Ethernet1/3

Server_35,NW14,Ethernet1/4 Server_35,NW14,Ethernet1/4

Server_35,NW14,Ethernet1/5 Server_35,NW14,Ethernet1/5

Server_35,NW14,Ethernet1/6 Server_35,NW14,Ethernet1/6

Server_35,NW14,port-channel2 Server_35,NW14,port-channel2

Server_35,NW15,xg16服务器_35,NW15,xg16

Server_41,NW16,Ethernet1/3 Server_41,NW16,Ethernet1/3

Server_41,NW16,Ethernet1/4 Server_41,NW16,Ethernet1/4

Server_41,NW16,Ethernet1/5 Server_41,NW16,Ethernet1/5

Server_41,NW16,Ethernet1/6 Server_41,NW16,Ethernet1/6

Server_41,NW16,port-channel2 Server_41,NW16,port-channel2

Server_41,NW17,xg16服务器_41,NW17,xg16

Server_16,NW6,ae5服务器_16,NW6,ae5

Server_16,NW6,ge-2/2/3 Server_16,NW6,ge-2/2/3

Server_16,NW6,ge-2/2/4 Server_16,NW6,ge-2/2/4

Server_16,NW6,ge-2/2/5 Server_16,NW6,ge-2/2/5

Server_16,NW6,ge-2/3/2 Server_16,NW6,ge-2/3/2

Server_16,NW6,ge-2/3/3 Server_22,NW7,ae5服务器_16,NW6,ge-2/3/3 服务器_22,NW7,ae5

Server_22,NW7,ge-2/2/3 Server_22,NW7,ge-2/2/3

Server_22,NW7,ge-2/2/4 Server_22,NW7,ge-2/2/4

Server_22,NW7,ge-2/2/5 Server_22,NW7,ge-2/2/5

Server_22,NW7,ge-2/3/2 Server_22,NW7,ge-2/3/2

Server_22,NW7,ge-2/3/3 Server_22,NW7,ge-2/3/3

Server_28,NW8,ge-8/0/0 Server_28,NW8,ge-8/0/0

Server_28,NW9,ge-8/0/0 Server_28,NW9,ge-8/0/0

Server_30,NW10,ge-0/0/2 Server_30,NW10,ge-0/0/2

Server_30,NW11,ge-0/0/3 Server_30,NW11,ge-0/0/3

Server_32,NW12,ge8服务器_32,NW12,ge8

Server_32,NW13,ge-0/0/2 Server_32,NW13,ge-0/0/2

Server_34,NW13,ge-0/0/3 Server_34,NW13,ge-0/0/3

Server_35,NW14,Ethernet1/3 Server_35,NW14,Ethernet1/3

Server_35,NW14,Ethernet1/4 Server_35,NW14,Ethernet1/4

Server_35,NW14,Ethernet1/5 Server_35,NW14,Ethernet1/5

Server_35,NW14,Ethernet1/6 Server_35,NW14,Ethernet1/6

Server_35,NW14,port-channel2 Server_35,NW14,port-channel2

Server_35,NW15,xg16服务器_35,NW15,xg16

Server_41,NW16,Ethernet1/3 Server_41,NW16,Ethernet1/3

Server_41,NW16,Ethernet1/4 Server_41,NW16,Ethernet1/4

Server_41,NW16,Ethernet1/5 Server_41,NW16,Ethernet1/5

Server_41,NW16,Ethernet1/6 Server_41,NW16,Ethernet1/6

Server_41,NW16,port-channel2 Server_41,NW16,port-channel2

Server_41,NW17,xg16服务器_41,NW17,xg16

  1. I have already tried with -1)-2) etc. but cannot filter out single-line connected servers.我已经尝试过 -1)-2) 等,但无法过滤掉单线连接的服务器。 -1) df.set_index(['ServerID', 'NetwroID']) -2) df.groupby(['ServerID', 'NetwroID']) -1) df.set_index(['ServerID', 'NetwroID']) -2) df.groupby(['ServerID', 'NetwroID'])

  2. expected results预期成绩

=> following servers aren't redundant with more 2 physical lines and network devices. => 以下服务器不是多余的 2 条物理线路和网络设备。

Server_1,NW_1,ge-0/0/8服务器_1,NW_1,ge-0/0/8

Server_2,NW_2,ge-0/0/5服务器_2,NW_2,ge-0/0/5

Server_3,NW_3,Ethernet7/15 Server_3,NW_3,Ethernet7/15

Server_41,NW16,Ethernet1/3 Server_41,NW16,Ethernet1/3

Server_41,NW16,Ethernet1/4 Server_41,NW16,Ethernet1/4

Server_41,NW16,Ethernet1/5 Server_41,NW16,Ethernet1/5

Server_41,NW16,Ethernet1/6 Server_41,NW16,Ethernet1/6

Server_41,NW16,port-channel2 Server_41,NW16,port-channel2

Server_41,NW17,xg16服务器_41,NW17,xg16

  1. any good idea would be appreciated.任何好主意将不胜感激。

code代码
import pandas as pd导入 pandas 作为 pd

df = pd.read_csv('ports_analysis_example.cvs') df = pd.read_csv('ports_analysis_example.cvs')

df_groupby_1=df.groupby(['Server_ID','Network_ID']).count() df_groupby_1=df.groupby(['Server_ID','Network_ID']).count()

df_groupby_1 df_groupby_1

I would like to print out redundant problematic servers from following DataFrame.我想从 DataFrame 打印出冗余的有问题的服务器。

Server_ID Network_ID Port_name Server_ID Network_ID Port_name

Server_1 NW1 1服务器_1 NW1 1

Server_10 NW5 6服务器_10 NW5 6

Server_16 NW6 6服务器_16 NW6 6

Server_2 NW2 1服务器_2 NW2 1

Server_22 NW7 6服务器_22 NW7 6

Server_28 NW8 1 redundant network Server_28 NW8 1 个冗余网络

        NW9 1

Server_3 NW3 1服务器_3 NW3 1

Server_30 NW10 1 redundant network Server_30 NW10 1 个冗余网络

        NW11    1

Server_32 NW12 1 redundant network Server_32 NW12 1 个冗余网络

        NW13    1

Server_34 NW13 1服务器_34 NW13 1

Server_35 NW14 5服务器_35 NW14 5

        NW15    1

Server_4 NW4 6服务器_4 NW4 6

Server_41 NW16 5服务器_41 NW16 5

        NW17    1

Given your criteria, there is only one instance of a server with multiple paths to a single subnet:根据您的标准,只有一个服务器实例具有到单个子网的多条路径:

('Server_28', 'ge-8/0/0') redundant nets: {'NW8', 'NW9'}

Here's the code.这是代码。 We just build up a dictionary where the key is (server,net) and the value is the set of ports for that combination.我们只是建立一个字典,其中键是 (server,net),值是该组合的端口集。

data = """\
ServerID,NetworkID,Port name
Server_1,NW_1,ge-0/0/8
Server_2,NW_2,ge-0/0/5
Server_3,NW_3,Ethernet7/15
Server_4,NW4,ae4
Server_4,NW4,ge-2/2/0
Server_4,NW4,ge-2/2/1
Server_4,NW4,ge-2/2/2
Server_4,NW4,ge-2/3/0
Server_4,NW4,ge-2/3/1
Server_10,NW5,ae4
Server_10,NW5,ge-2/2/0
Server_10,NW5,ge-2/2/1
Server_10,NW5,ge-2/2/2
Server_10,NW5,ge-2/3/0
Server_10,NW5,ge-2/3/1
Server_16,NW6,ae5
Server_16,NW6,ge-2/2/3
Server_16,NW6,ge-2/2/4
Server_16,NW6,ge-2/2/5
Server_16,NW6,ge-2/3/2
Server_16,NW6,ge-2/3/3
Server_22,NW7,ae5
Server_22,NW7,ge-2/2/3
Server_22,NW7,ge-2/2/4
Server_22,NW7,ge-2/2/5
Server_22,NW7,ge-2/3/2
Server_22,NW7,ge-2/3/3
Server_28,NW8,ge-8/0/0
Server_28,NW9,ge-8/0/0
Server_30,NW10,ge-0/0/2
Server_30,NW11,ge-0/0/3
Server_32,NW12,ge8
Server_32,NW13,ge-0/0/2
Server_34,NW13,ge-0/0/3
Server_35,NW14,Ethernet1/3
Server_35,NW14,Ethernet1/4
Server_35,NW14,Ethernet1/5
Server_35,NW14,Ethernet1/6
Server_35,NW14,port-channel2
Server_35,NW15,xg16
Server_41,NW16,Ethernet1/3
Server_41,NW16,Ethernet1/4
Server_41,NW16,Ethernet1/5
Server_41,NW16,Ethernet1/6
Server_41,NW16,port-channel2
Server_41,NW17,xg16
Server_16,NW6,ae5
Server_16,NW6,ge-2/2/3
Server_16,NW6,ge-2/2/4
Server_16,NW6,ge-2/2/5
Server_16,NW6,ge-2/3/2
Server_16,NW6,ge-2/3/3 Server_22,NW7,ae5
Server_22,NW7,ge-2/2/3
Server_22,NW7,ge-2/2/4
Server_22,NW7,ge-2/2/5
Server_22,NW7,ge-2/3/2
Server_22,NW7,ge-2/3/3
Server_28,NW8,ge-8/0/0
Server_28,NW9,ge-8/0/0
Server_30,NW10,ge-0/0/2
Server_30,NW11,ge-0/0/3
Server_32,NW12,ge8
Server_32,NW13,ge-0/0/2
Server_34,NW13,ge-0/0/3
Server_35,NW14,Ethernet1/3
Server_35,NW14,Ethernet1/4
Server_35,NW14,Ethernet1/5
Server_35,NW14,Ethernet1/6
Server_35,NW14,port-channel2
Server_35,NW15,xg16
Server_41,NW16,Ethernet1/3
Server_41,NW16,Ethernet1/4
Server_41,NW16,Ethernet1/5
Server_41,NW16,Ethernet1/6
Server_41,NW16,port-channel2
Server_41,NW17,xg16"""

lines = data.splitlines()
nets = {}
for line in lines:
    parts = line.split(',')
    key = parts[0],parts[2]
    if key not in nets:
        nets[key] = set()
    nets[key].add( parts[1] )

for k,v in nets.items():
    if len(v) < 2:
        continue
    print(k,"redundant nets:", v)

import pandas as pd导入 pandas 作为 pd

import csv进口 csv

df = pd.read_csv('all_port_connections_informaion_0819_csv.csv', encoding = 'cp949') df = pd.read_csv('all_port_connections_informaion_0819_csv.csv', 编码 = 'cp949')

ports_analysis=df.set_index(['connected_serverID','serverID','ports'], drop=False) ports_analysis=df.set_index(['connected_serverID','serverID','ports'], drop=False)

csv_data=open('all_port_connections_informaion_0819_csv.csv') csv_data=open('all_port_connections_informaion_0819_csv.csv')

data=csv.reader(csv_data)数据=csv.reader(csv_data)

nets = {}网 = {}

k_list = [] k_list = []

print(k_list)打印(k_list)

for line in data:对于数据行:

key = line[8],line[4]

if key not in nets:
    nets[key] = set()
nets[key].add( line[0] )

for k, v in nets.items():对于 nets.items() 中的 k、v:

if len(v) <2:
    if k == ("connected_serverID", "ports") :
        #print(k, "single nets:", v)
        continue
    k_list.extend([k])

printout_k_list = [k_list[i][0] for i in range(len(k_list))] printout_k_list = [k_list[i][0] for i in range(len(k_list))]

seted_printout_klist=list(set(printout_k_list)) seted_printout_klist=list(set(printout_k_list))

writer = pd.ExcelWriter('improved_nets_singled_device.xlsx') ports_analysis.loc[(seted_printout_klist[i] for i in range(len(seted_printout_klist)))].to_excel(writer, 'Sheet1') writer.save() writer = pd.ExcelWriter('improved_nets_singled_device.xlsx') ports_analysis.loc[(seted_printout_klist[i] for i in range(len(seted_printout_klist)))].to_excel(writer, 'Sheet1') writer.save()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM