· 9 years ago · May 23, 2017, 05:58 AM
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
19use 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 ,
30PRIMARY KEY (`unic_id`)
31)";
32$dbh->do("$MySQL_query") or die $Mysql::db_errstr;
33# Сбор данных
34my $res = $dbh->prepare("SELECT DISTINCT CISCO_user, ip, mac, port
35FROM SNMP_MAC, CISCO_SES
36WHERE CISCO_IF_mac=mac
37AND CISCO_date=date
38AND CISCO_time=time
39AND CISCO_date='$MYDATE'
40AND port<25 ;");
41
42$res->execute();
43if ($res->err) {
44 # ЕÑли возникла ошибка
45 print "Ошибка " . $res->errstr;
46}
47else {
48 while (my @row = $res->fetchrow_array()) {
49$str = "$row[0]\t$row[1]\t$row[2]\t$row[3]";
50#print $str, "\n";
51push (@MASS_IN ,$str);
52 }
53}
54$res->finish();
55##Получение данных из таблицы назначениÑ
56my $res2 = $dbh->prepare("SELECT ALL_user, ALL_ip, ALL_mac, ALL_port
57FROM ALL_SNMP ;");
58$res2->execute();
59if ($res2->err) {
60 # ЕÑли возникла ошибка
61 print "Ошибка " . $res->errstr;
62}
63else {
64 while (my @row2 = $res2->fetchrow_array()) {
65$str2 = "$row2[0]\t$row2[1]\t$row2[2]\t$row2[3]";
66#print $str, "\n";
67push (@MASS_OUT ,$str2);
68 }
69}
70$res2->finish();
71#Получение уникальных маÑÑивов
72for $i (@MASS_IN) {
73 push (@UNIC , $i) if ! grep {$i ne $_} @MASS_OUT;
74}
75#print @UNIC;
76#вÐЕСЕÐИЕ Ð’ БÐЗУ
77for ($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}
861;