首页 > 其他分享 >通过snmp获取设备每个接口的配置IP地址,网段信息和VLAN接口号

通过snmp获取设备每个接口的配置IP地址,网段信息和VLAN接口号

时间:2023-09-11 14:24:21浏览次数:48  
标签:Vlan 网段 network get VLAN snmp community host

第一部分,观察通过snmp OID能获取的信息,对信息进行关联。

1、通过 snmp获取到接口IP地址和掩码信息,发现IP地址作为索引值;

2、每个IP地址的索引,都可以关联到接口的索引

3、每个接口索引,都可以通过snmp获取到接口的名称,

降这个3个数据进行关联,可以得到接口名称和网段信息的关联。

第二部分:通过代码实现。

get_vlan_network.py

import re,os,ipaddress


#get the interface Vlan value
def get_Vlanif_value(host,SNMP_community):


    vlan_dict = {}
    pattern = re.compile(r'(\d+)\s*=\s*STRING:\s*(\S+)')


    cmd = "snmpwalk -v 2c -c " + SNMP_community  +" "+ host + " ifname | grep Vlan" # 进行过滤,仅显示VLAN接口
    tmp = os.popen(cmd).readlines()
    # print("begin:",tmp)


    for i in tmp:
        matches = re.search(pattern, i)


        if matches:
            if_id = matches.group(1) #if_id: interface_snmp_ID
            Vlan_value = re.search(r'\d+', matches.group(2)).group()
            # print(if_id,Vlan_value)
            vlan_dict[if_id] = Vlan_value
   
    return vlan_dict



# VLAN = get_Vlan_value(host)
# print(VLAN)



# get the interface ip address and inetface snmp ID
def get_if_ip(host,SNMP_community):


    if_dict = {}
    pattern = r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) = INTEGER: (\d+)'


    cmd = "snmpwalk -v 2c -c " + SNMP_community +" "+ host + " .1.3.6.1.2.1.4.20.1.2"
    tmp = os.popen(cmd).readlines()


    for i in tmp:
        matches = re.search(pattern, i)


        if matches:
            ip_address = matches.group(1)
            if_id = matches.group(2)
            if_dict[ip_address] = if_id


    return if_dict


# IF_value = get_if_ip(host)
# print(IF_value)



def get_network_value(host,SNMP_community):
   
    network_dict = {}
    pattern = r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) = IpAddress: (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})'


    cmd = "snmpwalk -v 2c -c " + SNMP_community +" " + host + " .1.3.6.1.2.1.4.20.1.3 | grep -wv -e 255.255.255.255"
    tmp = os.popen(cmd).readlines()


    for i in tmp:
        matches = re.search(pattern, i)


        if matches:
            ip_address = matches.group(1)
            subnet_mask = matches.group(2)
            network_str = f"{ip_address}/{subnet_mask}"
            network = ipaddress.IPv4Network(network_str, strict=False)


            network_dict[ip_address] = network.with_prefixlen
   
    return network_dict



def get_network_subnet_Vlan(host,SNMP_community):
    # 将网段信息与VLAN ID进行关联


    Netowrk_Vlan ={}
    Vlan_info = get_Vlanif_value(host, SNMP_community)
    If_info =  get_if_ip(host, SNMP_community)
    Network_info = get_network_value(host, SNMP_community)
   
    # print(host,SNMP_community)


    for k ,v_net in Network_info.items():
        # print(k)
        if k in If_info:
            # Netowrk_Vlan[v_net]
            if If_info[k] in Vlan_info: #Vlan_info 进行了过滤,
                # print( v_net, Vlan_info[If_info[k]])
                Netowrk_Vlan[v_net]=Vlan_info[If_info[k]]


    return Netowrk_Vlan



if __name__ == '__main__':


   
    with open('host_snmp.txt', 'r', encoding='utf8') as f:
       
        for line in f:
            dict = {}
            host = line.split(" ")[0]
            snmp_community = (line.split(" ")[1]).strip()
             
            # print(host,snmp_community)
            #将所有数据放入字典
            dict[host] = get_network_subnet_Vlan(host,snmp_community)   
            print(dict)
  将设备IP地址、snmp团体字保存再host_snmp.txt 文件中,每行一台设备,通过脚本遍历进行查询。 将结果保存为字典格式,便于后续对数据进行利用。 文件存储格式: host_ip snmp_commuinty   数据数据格式: {'host_ip':{network/mask':'vlan_id',network/mask':'vlan_id'}}    

 

标签:Vlan,网段,network,get,VLAN,snmp,community,host
From: https://www.cnblogs.com/niu525/p/17693436.html

相关文章

  • vlan端口类型与配置
    端口类型Access端口   1.一般用于链接接入链路   2.作为出接口要脱标签,作为入接口要添加标签   3.只能识别一个标签Trunk端口   1.一般用于链接干道链路   2.trunk端口传递的信息一般带有标签   3.能识别多个标签Hybrid端口   1.华为私有(华为默认) ......
  • 网段隔离器:NAT转换多个网段实现跨网段访问
    在工厂网络架构,常常出现IP冲突问题,影响到设备上网和数据采集工作,最实用的解决方式是NAT(网络地址转换),可以将局域网中的私有IP地址转换为公共IP地址,使得局域网能够与公网进行通信,通过公网也能访问到局域网设备。物通博联推出的网段隔离器(NAT转换网关)适用于生产网络对 PLC、HMI、CNC......
  • 防火墙配置SNMP
    深信服AC配置SNMP 深信服AF配置SNMP 深信服AD配置SNMP  在接口上启用是snmp管理,平台有网神的mib,可以都读到数据 ......
  • 交换机SNMP配置
    配置参考v2c为例 1、华为snmp-agentprotocolsource-interfacevlanif1##S573x以上型号交换机需要snmp-agentsnmp-agentsys-infoversionv2csnmp-agentmib-viewincludeView_ALLisosnmp-agentcommunityread规划的团体名mib-viewView_ALL或snmp-agentsnmp-agentsy......
  • 一文讲懂什么是vlan、三层交换机、网关、DNS、子网掩码、MAC地址
    大家好,我的网工朋友俱乐部公众号和网工交流群建立这么久了,不断的有朋友在后台、群里问到什么是网关、dns、子网掩码……以及三层交换机等用途。这些都是网络的基础,不学扎实了,确实也没办法进阶。本期文章就再给你详细地、通俗地给你一次性说清楚今日文章阅读福利:《全国网工交流群进......
  • linux IP地址原理,分类,子网划分,VLAN,TRUNK详解
    鱼弦:全栈领域创作新星创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen) LinuxIP地址原理和分类在计算机网络中,IP地址是用于唯一标识网络中的主机的一组数字,它由32位二进制数表示,通常采用点分十进制表示法。IP......
  • 2万字,50张图,VLAN技术精华帖
    下午好,我的网工朋友关于Vlan的知识点可谓是多之又多,什么广播域、实现Vlan的机制、Vlan的访问链接、汇聚链接、汇聚方式、Vlan间路由、设计局域网……只有你想不到的,没有它没有的。这么多技术点,对新手网工可算不上友好,咋整?今天这篇文,就打算用2万字+50张图,为你一口气梳理完Vlan的基础......
  • 网络配置之 vlan
    什么是广播域概念:能够接收到同样广播消息的网络节点的集合缺陷:当同一个广播域内广播报文过多时,会对局域网造成干扰,导致网络延迟,网络拥塞(上网卡,上网慢),严重情况可以造成广播风暴,导致网络瘫痪,给网络的可靠性和安全性带来了严重挑战。2、如何解决广播1)利用路由器分割广播域:路......
  • 华为ENSP学习之设置VLAN间通信
    1、同交换机vlan间通信拓扑图如下:同交换机vlan间通信的关键:为每个vlan设置ip地址步骤:配置pc1和pc2的ip地址配置lsw1的vlan100和200设置vlan100和200的ip地址配置pc1和pc2的网关地址为vlan100和200的ip地址配置lsw1的g0/0/1和g0/0/2端口的连接类型和所属vlan交换......
  • python判断ip所属地区 python 判断ip 网段
    IP地址是互联网中唯一标识一个设备的地址,有时候需要判断一个IP地址所属的地区,这就需要用到IP地址归属查询。本文将介绍Python如何通过IP地址查询所属地区并展示代码。一、IP地址归属查询IP地址归属查询又称IP地址归属地查询、IP地址归属地定位、IP地址查询、IP地址定位等,是通过......