| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #!/usr/bin/perl
- use strict;
- use Net::SNMP qw(ticks_to_time TRANSLATE_NONE);
- use DateTime;
- use DateTime::Format::Strptime;
- my $TIMEOUT = 30;
- $SIG{ALRM} = sub { print "ERROR: No response\n"; exit 3; };
- alarm($TIMEOUT);
- my $warn_time = 365 * 5;
- my $hostip=$ARGV[0];
- my $community = $ARGV[1] || 'public';
- my ($session, $error) = Net::SNMP->session(
- -hostname => shift || $hostip,
- -community => shift || $community,
- -port => shift || 161,
- -timeout => 5,
- );
- if (!defined($session)) {
- printf("ERROR: %s.\n", $error);
- exit 1;
- }
- my $inputline = '1.3.6.1.4.1.318.1.1.1.2.1.3.0';
- $session->translate(TRANSLATE_NONE);
- my $result = $session->get_request(
- -varbindlist => [$inputline]
- );
- if (!defined($result)) {
- printf("ERROR: %s.\n", $session->error);
- $session->close;
- exit 2;
- }
- $session->close;
- if (!defined($result->{$inputline})) {
- printf("ERROR: %s.\n", $session->error);
- $session->close;
- exit 2;
- }
- my $value = $result->{$inputline};
- my ($mm,$dd,$yy) = split(/\//,$value);
- if ($yy <2000 ) { $yy+=2000; }
- my $date = DateTime->new( year => $yy, month => $mm, day => $dd, time_zone => 'local');
- my $today = DateTime->today(time_zone=>'local');
- my $dur = $date->delta_days($today);
- my $timeshift = $dur->in_units('days');
- if ($timeshift > $warn_time) {
- printf("WARN: The batteries are too old. It's time to change: %s\n", $value);
- $session->close;
- exit 1;
- }
- printf("Last Battery Replacement : %s\n",$value);
- exit 0;
|