scan_ipcam.pl 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #!/usr/bin/perl
  2. use FindBin '$Bin';
  3. use lib "$Bin";
  4. use DBI;
  5. use File::Basename;
  6. use File::Find;
  7. use File::stat qw(:FIELDS);
  8. use File::Spec::Functions;
  9. use Sys::Hostname;
  10. use DirHandle;
  11. use Time::localtime;
  12. use Fcntl;
  13. use Tie::File;
  14. use Data::Dumper;
  15. use Net::Ping;
  16. use Net::SNMP qw(ticks_to_time TRANSLATE_NONE);
  17. use Rstat::config;
  18. use Rstat::main;
  19. use Rstat::mysql;
  20. my %hik_snmp_oids=(
  21. '.1.3.6.1.4.1.39165.1.1.0'=>'Model',
  22. '.1.3.6.1.4.1.39165.1.3.0'=>'Firmware',
  23. '.1.3.6.1.4.1.39165.1.5.0'=>'Number',
  24. '.1.3.6.1.4.1.39165.1.6.0'=>'Vendor',
  25. );
  26. my @hik_oids=();
  27. foreach my $oid (keys %hik_snmp_oids) {
  28. push (@hik_oids,$oid);
  29. }
  30. sub scan_ipcam {
  31. my $ip = shift;
  32. my $community = shift;
  33. my $result ='';
  34. #eval {
  35. my ($session, $error) = Net::SNMP->session(
  36. -hostname => $ip,
  37. -community => $community,
  38. -port => 161,
  39. -version => '2'
  40. );
  41. $session->translate(TRANSLATE_NONE);
  42. my $ret = $session->get_request( -varbindlist => [@hik_oids] );
  43. $result = 'ip: '.$ip;
  44. foreach my $oid (keys %hik_snmp_oids) {
  45. $result = $result." ".$hik_snmp_oids{$oid}.": ".$ret->{$oid};
  46. }
  47. $result = trim($result);
  48. #};
  49. return $result;
  50. }
  51. my @auth_list=get_custom_records($dbh,'SELECT * FROM User_auth WHERE deleted=0');
  52. ##################################### User auth analyze ################################################
  53. if (scalar(@auth_list)>0) {
  54. foreach my $auth (@auth_list) {
  55. next if (!$auth);
  56. my $ip = $auth->{'ip'};
  57. $ip =~s/\/\d+$//g;
  58. $devices{$device_id}{ip}=$ip;
  59. #get user
  60. my $login = get_custom_record($dbh,"SELECT * FROM User_list WHERE id=".$auth->{'user_id'});
  61. next if ($login->{ou_id} ne 5);
  62. $devices{$device_id}{device_model} = $auth->{'host_model'};
  63. $devices{$device_id}{dns_name} = $auth->{'dns_name'};
  64. $devices{$device_id}{auth_id} = $auth->{'id'};
  65. my $snmp_info = scan_ipcam($auth->{ip},'public');
  66. if ($snmp_info) { print $snmp_info."\n"; }
  67. }
  68. }
  69. exit;