• 利用shell简单监控网络设备的接口状态发出告警


     作者:邓聪聪

    #!/bin/sh
    Date=$(date +%F_%T)
    iplist=`cat ip.txt |awk '{print $1}'`
    snmp="hjsz-snmp"
    #Name=/root/test/name.txt
    Descr=/root/test/descr.txt
    #Alias=/root/test/Alias.txt
    Status_befor=/root/test/Tmp_status.txt
    Status_now=/root/test/Status_now.txt
    Tmp_chg_id=/root/test/tmp_chg.txt
    
    while true
    do
            for ip in $iplist
            do
                    {
                    #首次获取接口状态
                    snmpwalk  -v 2c -c $snmp $ip ifOperStatus >$Status_befor.$ip
                    sleep 15
                    while true
                    do
                            
                            #再次获取接口状态
                            snmpwalk  -v 2c -c $snmp $ip ifOperStatus >$Status_now.$ip
                            cat $Status_now.$ip $Status_befor.$ip | sort -nr | uniq -c | grep "1 IF-MIB" > $Tmp_chg_id.$ip
                            if [ $? -eq 0 ];then
                                    for i in `cat $Tmp_chg_id.$ip |awk -F'.' '{print $2}' | awk '{print $1}' | sort -nr | uniq`
                                            do
                                                    #获取当前设备OID值的接口
                                                    snmpwalk  -v 2c -c $snmp $ip ifDesc >$Descr
                                                    #获取初始的接口状态
                                                    now_stat=`cat $Status_now.$ip |grep "ifOperStatus.$i " | awk '{print $NF}'`
                                                    #获取当前的接口状态
                                                    now_stat=`cat $Status_now.$ip |grep "ifOperStatus.$i " | awk '{print $NF}' |awk -F '(' '{print $1}'`
                                                    #获取当前设备OID值的接口名称
                                                    sw_port=`cat $Descr | grep "ifDescr.$i " | awk '{print $NF}'`
                                                    #获取当前设备OID值的设备名称
                                                    sysname=`snmpwalk  -v 2c -c $snmp $ip SNMPv2-MIB::sysName.0 |awk '{print $4}'`
                                                    #获取当前设备OID值的描述信息
                                                    sysalias=`snmpwalk  -v 2c -c $snmp $ip ifAlias |grep "ifAlias.$i " | awk '{print $NF}'`
                                                    echo "$sysname|$sw_port|$now_stat|$sysalias"
                                            done
                            fi
                    break
                    done
                    } &
            wait
            done
    sleep 3
    done
  • 相关阅读:
    图解SSH隧道功能
    su和sudo命令的用法
    Linux下下载百度网盘资料
    WPS Office 2019 for Linux来了
    Linux下的录屏软件Kazam
    用hdparm获取硬盘参数
    百度,你能不能有点节操?
    locate的基本用法
    Java class不分32位和64位
    Web站点抓取工具webhttrack
  • 原文地址:https://www.cnblogs.com/dengcongcong/p/9991653.html
Copyright © 2020-2023  润新知