check_snmp_uptime 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #!/usr/bin/perl
  2. use strict;
  3. use lib "/etc/nagios4/scripts/plugins";
  4. use snmp;
  5. use Net::SNMP qw(ticks_to_time TRANSLATE_NONE);
  6. my $TIMEOUT = 30;
  7. $SIG{ALRM} = sub { print "ERROR: No response\n"; exit 3; };
  8. alarm($TIMEOUT);
  9. my $host = shift @ARGV;
  10. my $snmp_str = shift @ARGV;
  11. my ($community,$version,$user,$auth,$priv) = split(/;/,$snmp_str);
  12. my $snmp;
  13. $snmp->{version} = $version || '2';
  14. $snmp->{timeout} = 30;
  15. $snmp->{community} = $community || 'public';
  16. $snmp->{user} = $user || 'public';
  17. $snmp->{auth} = $auth || 'sha1';
  18. $snmp->{priv} = $priv || 'aes';
  19. my $session = init_snmp($host,$snmp);
  20. #sysUpTimeInstance .1.3.6.1.2.1.1.3.0
  21. my $inputline = '.1.3.6.1.2.1.1.3.0';
  22. $session->translate(TRANSLATE_NONE);
  23. my $result = $session->get_request(
  24. -varbindlist => [$inputline]
  25. );
  26. if (!defined($result)) {
  27. printf("ERROR: %s.\n", $session->error);
  28. $session->close;
  29. exit 2;
  30. }
  31. $session->close;
  32. my $value = $result->{$inputline};
  33. my $uptime = ticks_to_time($value);
  34. my $perf_data = "input=0;0;0;0;0;";
  35. if (!defined($result->{$inputline})) {
  36. printf("ERROR: %s. |".$perf_data."\n", $session->error);
  37. $session->close;
  38. exit 2;
  39. }
  40. $perf_data = "uptime=%s;0;0;0;0;";
  41. if ($value <=480) {
  42. printf("ERROR: Restarted device! Uptime: %s |".$perf_data."\n", $uptime, $value);
  43. $session->close;
  44. exit 2;
  45. }
  46. printf("OK Uptime: %s |".$perf_data."\n", $uptime,$value);
  47. exit 0;