1
0

check_snmp_hikvision 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #!/usr/bin/perl
  2. use strict;
  3. use Net::SNMP qw(ticks_to_time TRANSLATE_NONE);
  4. my $TIMEOUT = 30;
  5. $SIG{ALRM} = sub { print "ERROR: No response\n"; exit 3; };
  6. alarm($TIMEOUT);
  7. my $ip = shift;
  8. my $community = shift || 'public';
  9. my $port = shift || '161';
  10. my $version = shift || '2';
  11. my ($session, $error) = Net::SNMP->session(
  12. -hostname => $ip,
  13. -community => $community,
  14. -port => $port,
  15. -version => $version
  16. );
  17. if (!defined($session)) {
  18. printf("ERROR: %s.\n", $error);
  19. exit 1;
  20. }
  21. my %hik_snmp_oids=(
  22. '.1.3.6.1.4.1.39165.1.5.0'=>'Number',
  23. '.1.3.6.1.4.1.39165.1.6.0'=>'Vendor',
  24. '.1.3.6.1.4.1.39165.1.1.0'=>'Model',
  25. '.1.3.6.1.4.1.39165.1.3.0'=>'Firmware',
  26. );
  27. my @hik_oids=();
  28. foreach my $oid (keys %hik_snmp_oids) {
  29. push (@hik_oids,$oid);
  30. }
  31. $session->translate(TRANSLATE_NONE);
  32. my $ret = $session->get_request( -varbindlist => [@hik_oids] );
  33. if (!defined($ret)) {
  34. printf("ERROR: %s.\n", $session->error);
  35. $session->close;
  36. exit 2;
  37. }
  38. $session->close;
  39. my $result = '';
  40. foreach my $oid (keys %hik_snmp_oids) {
  41. $result = $result." ".$hik_snmp_oids{$oid}.": ".$ret->{$oid};
  42. }
  43. $result =~s/^\s+//g;
  44. $result =~s/\s+$//g;
  45. printf("OK : $result\n");
  46. exit 0;