snmp监控脚本学习

简介:
[背景]今天,在整理自己的桌面时,发现了几篇关与snmp的脚本,感觉还行.就拿来和大家一起分享了.如果有脚本不明白的请留言,或者加我MSN:hahazhu0634@live.cn,保证有问必答(除非我不会,哈哈)!
[脚本]
#!/usr/bin/local_perl
# Dont use the embedded apache perl....
# Author : Peter
# Date : Apr 11 2006
# check_hd IP COMMUNITY warnlevel criticallevel disc
sub print_usage 
{
print "
############################## check_hd ###############################
# Version : 1.0 
# Date : Apr 11 2006  
# Author  : Peter Stimpel 
# Thanks to Benjamin Jakubowski for the idea to walk through snmp
# Help :  [url]http://www.peters-webcorner.de/nagios/[/url]
# Licence : GPL -  [url]http://www.fsf.org/licenses/gpl.txt[/url] 
#######################################################################\n";
 print "check_hd IP COMMUNITY warnlevel criticallevel disc\n";
 print"\ncheck_hd -v for version info\n";
 
}
$PROGNAME = "check_hd";
if (@ARGV[0] eq "-v") {
 print_usage();
 exit 0;
}
if  ( @ARGV[0] eq "" || @ARGV[1] eq "" || @ARGV[2] eq "" || @ARGV[3] eq "" || @ARGV[4] eq "")
{
    print_usage();
    exit 0;
}
$IP=@ARGV[0 ];
$COMMUNITY=@ARGV[1 ];
$Service=@ARGV[2 ];
$LW=@ARGV[4 ];
$resultat =`snmpwalk -v 1 -c $COMMUNITY $IP  hrStorageDescr | grep $LW\:\\`;
$fullsize1=0;
$usedsize1=0;
$freespace=0;
if ( $resultat ) {
  $resstring= $resultat;
  if ($resultat = ~/hrStorageDescr./) {
   $tsid = substr($resstring,35,1);  
   $resultat2 =`snmpwalk -v 1 -c $COMMUNITY $IP hrStorageAllocationUnits.$tsid`;
   $resstring2 = $resultat2;
   if ($resultat2 = ~/hrStorageAllocationUnits.$tsid/) {
     #@unit  = substr($resstring2,58,5);
    @unit=split(/:/,$resstring2);
    @unit1=split(/\ /,$unit[3]);
    $unit1=$unit1[1];
    $resultat3 =`snmpwalk -v 1 -c $COMMUNITY $IP hrStorageSize.$tsid`;
    $resstring3 = $resultat3;
    if ($resultat3 = ~/hrStorageSize.$tsid/) {
     @ta=split(/INTEGER/,$resstring3);    
     chomp($ta[1]);
     $size1=substr($ta[1],1);
     $fullsize1 = $fullsize1 + $size1;
     $fullsize1 = $fullsize1 * $unit1;
    }
    $resultat4 =`snmpwalk -v 1 -c $COMMUNITY $IP hrStorageUsed.$tsid`;
    $resstring4 = $resultat4;
    if ($resultat4 = ~/hrStorageUsed.$tsid/) {
     @tb=split(/INTEGER/,$resstring4);    
     chomp($tb[1]);
     $size1=substr($tb[1],1);
     $usedsize1 = $usedsize1 + $size1;
     $usedsize1 = $usedsize1 * $unit1;
    }
    if ($usedsize1 > 0 && $fullsize1 > 0) {
     $freespace=$fullsize1 - $usedsize1;
     $freespace=$freespace / 1024 / 1024 / 1024;
     $percfilled=$usedsize1 * 100 / $fullsize1;
     if ($percfilled > @ARGV[3]) {
      print "critical: hd $LW in use $percfilled perc and $freespace GB free w-$ARGV[2] c-$ARGV[3]\n";
             exit 2;
     }
     if ($percfilled > @ARGV[2]) {
      print "warning: hd $LW in use $percfilled perc and $freespace GB free w-$ARGV[2] c-$ARGV[3]\n";
             exit 1;
     }
     print "OK: hd $LW in use $percfilled perc and $freespace GB free w-$ARGV[2] c-$ARGV[3]\n";
     exit 0;
    }
   }
  }
 print "Critical  : Response unknown\n";
        exit 2;
}
else
{
 print "Critical  : no response\n";
        exit 2;
}


本文转自hahazhu0634 51CTO博客,原文链接:http://blog.51cto.com/5ydycm/116838,如需转载请自行联系原作者

相关文章
|
7月前
|
存储 监控
第六十五章 使用 SNMP 监控 IRIS - 用户定义的 SNMP 监视器类示例
第六十五章 使用 SNMP 监控 IRIS - 用户定义的 SNMP 监视器类示例
53 0
|
7月前
|
监控 程序员 数据库
第六十四章 使用 SNMP 监控 IRIS - 扩展 IRIS MIB
第六十四章 使用 SNMP 监控 IRIS - 扩展 IRIS MIB
58 0
|
7月前
|
监控 网络协议 Unix
第六十三章 使用 SNMP 监控 IRIS - SNMP 故障排除
第六十三章 使用 SNMP 监控 IRIS - SNMP 故障排除
85 0
|
7月前
|
监控 网络协议 安全
第六十二章 使用 SNMP 监控 IRIS
第六十二章 使用 SNMP 监控 IRIS
70 0
|
监控 网络架构
Zabbix的snmp监控
Zabbix的snmp监控
118 0
|
运维 监控 数据安全/隐私保护
【运维知识进阶篇】zabbix5.0稳定版详解5(SNMP网络管理协议监控)
【运维知识进阶篇】zabbix5.0稳定版详解5(SNMP网络管理协议监控)
314 0
|
监控 数据安全/隐私保护 网络架构
【Zabbix】Zabbix基于SNMP监控配置
【Zabbix】Zabbix基于SNMP监控配置
604 0
|
存储 消息中间件 Prometheus
统一观测丨使用 Prometheus 监控 SNMP,我们该关注哪些指标?
统一观测丨使用 Prometheus 监控 SNMP,我们该关注哪些指标?
统一观测丨使用 Prometheus 监控 SNMP,我们该关注哪些指标?
QGS
|
监控 安全 开发者
zabbix5.0.8-SNMP协议监控Windows10-PC
记zabbix5.0.8-SNMP协议监控Windows10-PC
QGS
225 0
zabbix5.0.8-SNMP协议监控Windows10-PC
QGS
|
监控
zabbix5.0.8-SNMP协议监控HP打印机
记zabbix5.0.8-SNMP协议监控HP打印机
QGS
946 0
zabbix5.0.8-SNMP协议监控HP打印机