Сделал несложный скриптик для мониторинга железок:
################################################################
#!/usr/bin/perl -w -T
use strict;
use warnings;
use SNMP;
use Net::SNMP qw(snmp_dispatcher ticks_to_time);
my ($ROUTER,$COMMUNITY);
my %ERRORS=('OK'=>0, 'WARNING'=>1, 'CRITICAL'=>2);
if (scalar @ARGV and $ARGV[1]) {
($ROUTER,$COMMUNITY)=@ARGV;
} else {
die "Usage $0 <router> <community>\n";
}
my ($row,$code)=(0,'',3);
my ($descr,$uptime,$sysname)=('',0,'');
my $s1 = new SNMP::Session (DestHost => $ROUTER,
Community => $COMMUNITY,
Timeout => 2000000,
Retries => 3,
Version => 1);
$descr = $s1->get("sysDescr.0");
if ( defined $descr ) {
$uptime = ticks_to_time( $s1->get("sysUpTimeInstance") );
$sysname = $s1->get("sysName.0");
$row = "$sysname ( $uptime ) \" $descr \"";
$code = $ERRORS{"OK"};
} else {
$row = "HOST Alive, but I can't get information by SNMP
protocol";
$code = $ERRORS{"CRITICAL"};
}
undef $s1;
print $row;
exit ($code);
################################################################
Все работает и все Ок!
>$ ./check_device_alive.pl X.X.X.X XXX
.....
.....
>$ echo $?
0
>$
Nagios - его понимает!
Решил его немного усложнить, чтоб не опрашивать трупы и при большой нагрузке на железа снизить процент ложных срабатываний!
################################################################
#!/usr/bin/perl -w -T
use strict;
use warnings;
use SNMP;
use Net::SNMP qw(snmp_dispatcher ticks_to_time);
my ($ROUTER,$COMMUNITY);
my %ERRORS=('OK'=>0, 'WARNING'=>1, 'CRITICAL'=>2, 'UNKNOWN'=>3);
if (scalar @ARGV and $ARGV[1]) {
($ROUTER,$COMMUNITY)=@ARGV;
} else {
die "Usage $0 <router> <community>\n";
}
my ($row,$code)=(0,'',3);
if ( PingScan( $ROUTER ) eq 1 ) {
my ($descr,$uptime,$sysname)=('',0,'');
my $s1 = new SNMP::Session (DestHost => $ROUTER,
Community => $COMMUNITY,
Timeout => 2000000,
Retries => 3,
Version => 1);
$descr = $s1->get("sysDescr.0");
if ( defined $descr ) {
$uptime = ticks_to_time( $s1->get("sysUpTimeInstance") );
$sysname = $s1->get("sysName.0");
$row = "$sysname ( $uptime ) \" $descr \"";
$code = $ERRORS{"OK"};
} else {
$row = "HOST Alive, but I can't get information by SNMP protocol";
$code = $ERRORS{"WARNING"};
}
undef $s1;
} else {
$row = "HOST IS DOWN!!! ICMP UNREACHABLE";
$code = $ERRORS{"CRITICAL"};
}
print $row;
exit ($code);
sub PingScan {
use Net::Ping;
my ($host) = @_;
my ($alive) = ('0');
my $sha=Net::Ping->new("icmp");
$alive = $sha->ping($host);
undef $sha;
return $alive;
}
################################################################
И тут начинается мистика!
>$ ./check_device_alive.pl X.X.X.X XXX
.....
.....
>$ echo $?
0
>$
А Nagios - орет: NAGIOS: (Return code of 255 is out of bounds)
Т.е., он перестает видеть возвращаемый ему "0"!!!
perl --version
This is perl, v5.10.0 built for i486-linux-gnu-thread-multi
Copyright 1987-2007, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
Может кто-то сталкивался, т.к. я не шибко програмист, просто скриптик нужен, а тут какой-то непонятный подводный камень, что exit (0); - как-то странно отрабатывает :*(
Ответ на:
комментарий
от hizel
Ответ на:
комментарий
от ManJak
Ответ на:
комментарий
от hizel
Ответ на:
комментарий
от ManJak
Ответ на:
комментарий
от ManJak
Ответ на:
комментарий
от hizel
Ответ на:
комментарий
от ManJak
Ответ на:
комментарий
от hizel
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Кто знает как понять эту ругань SNMP на запуск MRTG?-> (2001)
- Форум Nagios. check_arping - скрипт работает. Проблема с конфигурацией Nagios! (2012)
- Форум nagios notify-by-email (2011)
- Форум [perl] Обработка аварийных ситуаций. (2011)
- Форум mrtg - победить иль нет? (2004)
- Форум MRTG & Температура CPU (2008)
- Форум Почему не работает скрипт? (2013)
- Форум Перл, на разных ОС работает по разному. (2013)
- Форум Nagios - выполнение скрипта (2013)
- Форум nagios и перл скрипты (2013)