Advertisement
Guest User

Untitled

a guest
May 23rd, 2017
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.58 KB | None | 0 0
  1. #!/usr/bin/perl -w
  2. # вводим переменные
  3. # хост, который будем опрашивать
  4.  
  5. #$snmp_host = $ARGV[0];
  6. $MYDATE = $ARGV[1];
  7. #$MYTIME = $ARGV[2];
  8. # достаём время
  9.  
  10. # MySQL хост
  11. #$host = '10.40.2.30';
  12. # MySQL юзер
  13. #$user = 'snmp';
  14. # MySQL пароль
  15. #$password = 'snmp';
  16. # MySQL база данных
  17. #$database = 'SNMP';
  18. # подрубаем модуль для работы с MySQL
  19. use DBI;
  20. # Коннектимся к MySQL
  21. $dbh = DBI->connect("DBI:mysql:SNMP:10.40.2.30", "snmp", "snmp");
  22. # Создаём в БД таблицу для хранения итогов
  23. $MySQL_query = "CREATE TABLE IF NOT EXISTS `ALL_SNMP`
  24. (`unic_id` INT(12) NOT NULL AUTO_INCREMENT ,
  25. `ALL_time` TIMESTAMP(12) NOT NULL ,
  26. `ALL_user` TEXT(12) NOT NULL ,
  27. `ALL_ip` TEXT(20) NOT NULL ,
  28. `ALL_mac` TEXT(30) NOT NULL ,
  29. `ALL_port` TEXT(12) NOT NULL ,
  30. PRIMARY KEY (`unic_id`)
  31. )";
  32. $dbh->do("$MySQL_query") or die $Mysql::db_errstr;
  33. # Сбор данных
  34. my $res = $dbh->prepare("SELECT DISTINCT CISCO_user, ip, mac,  port
  35. FROM  SNMP_MAC, CISCO_SES
  36. WHERE CISCO_IF_mac=mac
  37. AND CISCO_date=date
  38. AND CISCO_time=time
  39. AND CISCO_date='$MYDATE'
  40. AND port<25 ;");
  41.  
  42. $res->execute();
  43. if ($res->err) {
  44.    # Если возникла ошибка
  45.    print "Ошибка " . $res->errstr;
  46. }
  47. else {
  48.    while (my @row = $res->fetchrow_array()) {
  49. $str = "$row[0]\t$row[1]\t$row[2]\t$row[3]";
  50. #print $str, "\n";
  51. push (@MASS_IN ,$str);
  52.    }
  53. }
  54. $res->finish();
  55. ##Получение данных из таблицы назначения
  56. my $res2 = $dbh->prepare("SELECT ALL_user, ALL_ip, ALL_mac, ALL_port
  57. FROM  ALL_SNMP ;");
  58. $res2->execute();
  59. if ($res2->err) {
  60.    # Если возникла ошибка
  61.    print "Ошибка " . $res->errstr;
  62. }
  63. else {
  64.    while (my @row2 = $res2->fetchrow_array()) {
  65. $str2 = "$row2[0]\t$row2[1]\t$row2[2]\t$row2[3]";
  66. #print $str, "\n";
  67. push (@MASS_OUT ,$str2);
  68.    }
  69. }
  70. $res2->finish();
  71. #Получение уникальных массивов
  72. for $i (@MASS_IN) {
  73.    push (@UNIC , $i) if ! grep {$i ne $_} @MASS_OUT;
  74. }
  75. #print @UNIC;
  76. #вНЕСЕНИЕ В БАЗУ
  77. for ($i=0; $i<scalar(@UNIC); ++$i)
  78. {
  79.   ($user[$i], $ip_swich[$i], $mac[$i],  $port[$i], ) = split(/\t/,$UNIC[$i],4);
  80.      print $i, "-", $user[$i],"-", $ip_swich[$i], "-", $mac[$i], "-", $port[$i],"\n";
  81.     $MySQL_query = "INSERT INTO `ALL_SNMP`
  82.     (`ALL_user`,`ALL_mac`,`ALL_ip`,`ALL_port`) VALUES
  83.     ('" . $user[$i] . "', '" . $ip_swich[$i] . "', '" . $mac[$i] ."', '" . $port[$i] . "')";
  84.     $dbh->do("$MySQL_query") or die $Mysql::db_errstr;
  85. }
  86. 1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement