H3C交换机聚合端口状态扫描

#!/usr/bin/python
#__*__ coding:utf-8 __*__

import os
import time
import commands
from multiprocessing import Queue,Event,Process,Pool,Manager

#指定交换机snmp community和日志文件路径
community=‘public‘
logfile=‘/root/switch_bagg_monitor/switch_bagg_monitor.log‘

#判断交换机所属厂家
def switch_provider(ip,community):
    global provider
    provider_oid=‘SNMPv2-MIB::sysDescr.0‘
    cmd=‘snmpwalk -c %s -v 2c %s %s‘%(community,ip,provider_oid)
    code,result=commands.getstatusoutput(cmd)
    if ‘Cisco‘ in result:
        provider=‘Cisco‘
    elif ‘H3C‘ in result:
        provider=‘H3C‘

#定义一个写日志的函数,供后面调用
def log_write(msg):
    file=open(logfile,‘a+‘)
    file.write(msg)
    file.close()

def BAGG_Monitor(ip,community):
    switch_provider(ip,community)

    if provider==‘H3C‘:
        bagg_conf_oid=‘iso.2.840.10006.300.43.1.2.1.1.13‘
        cmd=‘snmpwalk -c %s -v 2c %s %s‘%(community,ip,bagg_conf_oid)
        code,result=commands.getstatusoutput(cmd)
        result=result.split(‘\n‘)
        bagg_conf_int=[item for item in result if ‘INTEGER: 0‘ not in item]
        #print bagg_conf_int
        for item in bagg_conf_int:
            bagg_index=item.split(‘=‘)[-1].strip()

            bagg_int_status_oid=‘IF-MIB::ifOperStatus.%s‘%(bagg_index.split(‘:‘)[-1].strip())
            cmd=‘snmpwalk -c %s -v 2c %s %s‘%(community,ip,bagg_int_status_oid)
            code,result=commands.getstatusoutput(cmd)
            if ‘INTEGER: down(2)‘ not in result:
                #print result
                #print bagg_index
                bagg_mem_count=0
                for i in bagg_conf_int:
                    if bagg_index in i:
                        bagg_mem_count += 1
                if bagg_mem_count >= 2:
                        int_index=item.split(‘=‘)[0].split(‘.‘)[-1]
                        #print item
                        #print int_index
                        bagg_run_oid=‘iso.2.840.10006.300.43.1.2.1.1.12.%s‘%int_index
                        cmd=‘snmpwalk -c %s -v 2c %s %s‘%(community,ip,bagg_run_oid)
                        code,result=commands.getstatusoutput(cmd)
                        if ‘INTEGER: 0‘ in result:
                            int_adminstatus_oid=‘IF-MIB::ifAdminStatus.%s‘%int_index
                            cmd=‘snmpwalk -c %s -v 2c %s %s‘%(community,ip,int_adminstatus_oid)
                            code,result=commands.getstatusoutput(cmd)
                            if ‘down‘ not in result:
                                int_desc_oid=‘IF-MIB::ifDescr.%s‘%int_index
                                cmd=‘snmpwalk -c %s -v 2c %s %s‘%(community,ip,int_desc_oid)
                                code,result=commands.getstatusoutput(cmd)
                                error_int=result.split(‘:‘)[-1].strip()
                                current_time=time.strftime(‘%Y-%m-%d %H:%M:%S‘)
                                msg=‘%s\t%s\t\t%s\t\t端口聚合异常\n‘ %(current_time,ip,error_int)
                                #print msg
                                log_write(msg)
    elif provider == ‘Cisco‘:
        pass

if __name__ == ‘__main__‘:
    pool = Pool(30)
    for ip in open("/root/switch_bagg_monitor/switch_ip.txt") :
        ip = ip.strip()
        result = pool.apply_async(BAGG_Monitor,(ip,community,))
    pool.close()
    pool.join()
时间: 2024-10-11 10:17:47

H3C交换机聚合端口状态扫描的相关文章

python实现端口状态扫描

要实现端口状态扫描需要用到python的namp模块. 先到地址:https://pypi.python.org/pypi/python-nmap下载namp的软件包. 我这里下载的是0.6.1版本,OS是centos 7. 执行如下命令安装namp模块: cd python-nmap-0.6.1 python setup install python实现代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- #python version:  P

交换机的端口状态是UP,但是查询该端口下的MAC地址为空

(电脑已关机)电脑与交换机直连的端口状态 还是 UP ,但是 查询该端口下的 MAC地址为空. 初步怀疑原因: Wake-on-LAN(电脑关机,网卡还在工作) Wake-On-LAN简称WOL,是一种电源管理功能:如果存在网络活动,则允许设备将操作系统从待机或休眠模式中唤醒.许多主板厂商支持IBM提出的网络唤醒标准.该标准允许网络管理员远程打开PC机电源. Wake-On-LAN的实现,主要是向目标主机发送特殊格式的数据包,是AMD公司制作的MagicPacket这套软件以生成网络唤醒所需要的

H3C交换机常用命令

H3C交换机常用命令 1.查看Linux下查看端口状态 [email protected]:~# netstat -an|grep -E "6002|6003" 2.H3C交换机显示当前配置 [H3C]display current-configuration 3.H3C交换机显示arp信息 [H3C]dis arp 4.H3C交换机显示mac列表信息 [H3C]dis mac-address 5.H3C交换机显示端口信息 [H3C]display interface 6.进入系统视图

H3C交换机配置链路聚合

# 创建聚合组1(根据具体情况选择下面两种方式之一). l采用静态聚合模式:创建二层聚合接口1 <SwitchA> system-view [SwitchA] interface bridge-aggregation 1 [SwitchA-Bridge-Aggregation1] quit l采用动态聚合模式:创建二层聚合接口,并配置动态聚合模式 <SwitchA> system-view [SwitchA] interface bridge-aggregation 1 [Swit

查看思科、H3C所有端口状态

大家都知道交换机的端口都是比较多,当你想查看某些端口状态(是处于UP还是DOWN状态)时,通常我们会使用以下命令: 思科:show interface X H3C:display interface X 注:X表代端口号,如e1/0/1之类的. 但如果当交换机的端口非常多时,而且你想知道所有端口的状态时,你再一条一条命令输进去,那是相当累人的,同时输出的结果也过于详细,看得人眼花缭乱. 如何有效的查看所有端口的状态呢?我们可以使用以下命令: 思科:show ip interface brief

H3C 5500/5820 端口聚合LACP

1.创建聚合接口 ID为50 interface Bridge-Aggregation50 link-aggregation mode dynamic 使用LACP协议,默认使用的负载模式为src-ip dst-ip   华为交换机默认使用的是dst-mac 2.将接口加入到聚合组里 interface Ten-GigabitEthernet1/0/10 port link-mode bridge port link-aggregation group 50 interface Ten-Giga

Cisco PT模拟实验(5) 交换机的端口聚合配置

Cisco PT模拟实验(5)  交换机的端口聚合配置 实验目的: 理解端口聚合基本原理 掌握一般交换机端口聚合的配置方法 实验背景:公司财务部和销售部的PC通过2台交换机进行频繁通信,为提高链路之间的带宽,保证网络通信的可靠性:同时提供链路冗余,避免链路单点故障,从而影响关键节点的大面积断网,可考虑采用端口聚合技术来实现. 技术原理: 端口/链路聚合,是指把交换机上多个物理端口捆绑合成一个逻辑端口(称为Aggregate Port),这样在交换机之间形成一条拥有较大宽带的链路(ethercha

生成树中的5种交换机端口状态和3种生成树协议模式

端口状态:①关闭(disable):端口处于管理关闭状态 即DIS②阻塞(blocking): 不能转发用户数据 即BLK③监听(listening): 接口开始启动 即LIS④学习(learning) : 学习MAC地址, 构建MAC表进程项 即LRN⑤转发(forwarding): 可以转发用户数据 即FWD 生成树模式:1.802.1D,思科设备上默认开启的传统生成树(效果较差),PVST+2.802.1w,快速生成树,Rapid PVST+(RSTP)3.802.1s,多实例生成树,华为

zabbix监控H3C交换机端口流量

一.获取H3C交换机的OID 要获取H3C交换机的OID,必须确保该交换机是可以被网管的,即该交换机的161(SNMP)端口是被开启的.如161端口没有被开启,需在交换机上加上以下配置: snmp-agent community read whmp snmp-agent sys-info version all snmp-agent target-host trap address udp-domain 10.9.52.42 udp-port 161 param securityname net