Добавлю свои пару копеек:
Структура таблицы оборудования:
Код:
mysql> show fields from _data;
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| id | int(5) | NO | PRI | NULL | auto_increment |
| snumber | varchar(16) | YES | | NULL | |
| model | varchar(32) | YES | | NULL | |
| firmware | varchar(32) | YES | | NULL | |
| config | text | YES | | NULL | |
| box_id | varchar(10) | YES | | NULL | |
| cmt | varchar(255) | YES | | NULL | |
| ip | varchar(15) | YES | | NULL | |
| login | varchar(15) | YES | | NULL | |
| password | varchar(15) | YES | | NULL | |
+----------+--------------+------+-----+---------+----------------+
10 rows in set (0.02 sec)
Таблица пулера:
Код:
mysql> show fields from pooler;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| sid | smallint(6) | NO | MUL | NULL | |
| port | tinyint(4) | NO | MUL | NULL | |
| mac | char(12) | NO | MUL | NULL | |
| ip | varchar(15) | NO | MUL | NULL | |
| ptime | datetime | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
Пулер (запускается раз в 30 минут):
Код:
#!/usr/local/bin/php
<?php
function PadMAC($mac) {
$mac_arr = explode(':',$mac);
foreach($mac_arr as $atom) {
$atom = trim($atom);
$newarr[] = sprintf("%02s",$atom);
}
$newmac = implode(':',$newarr);
return $newmac;
}
$script_begin = date("H:i:s");
$db_host = "localhost";
$db_user = "root";
$db_pass = "";
$db_name = "mon";
$pub = "public";
$ip_mac_string = ".1.3.6.1.2.1.4.22.1.2";
$id_port= ".1.3.6.1.2.1.17.4.3.1.2";
$id_mac = ".1.3.6.1.2.1.17.4.3.1.1";
$conn = mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error());
mysql_select_db($db_name);
$switch = mysql_query("select ip, id from _data where ip!=0 and model='DES-3526'");
while($res=mysql_fetch_array($switch)) {
$switch_ip = $res[0];
$switch_id = (int)$res[1];
print "Pooling $switch_id ( $switch_ip )\n";
$a1 = split("\n",eregi_replace("INTEGER: ","",eregi_replace("SNMPv2-SMI::mib-2.17.4.3.1.2.","",shell_exec("/usr/local/bin/snmpwalk -c $pub -v 2c $switch_ip $id_port"))));
$a2 = split("\n",eregi_replace("Hex-STRING: ","",eregi_replace("SNMPv2-SMI::mib-2.17.4.3.1.1.","",shell_exec("/usr/local/bin/snmpwalk -c $pub -v 2c $switch_ip $id_mac"))));
$a3 = split("\n",eregi_replace("STRING: ","",eregi_replace("IP-MIB::ipNetToMediaPhysAddress.5120.","",shell_exec("/usr/local/bin/snmpwalk -c $pub -v 2c $switch_ip $ip_mac_string"))));
$compare1 = array();
foreach($a3 as $val) {
$ipmac = split(" = ", $val);
$ip = $ipmac[0]; $mac = eregi_replace(":","",strtoupper(PadMAC($ipmac[1])));
if($ip && $mac) {
// print "$ip = $mac\n";
$compare[$mac] = $ip;
}
}
foreach($a1 as $key=>$val) {
$string = split(" = ","$val = ".$a2[$key]);
if($string[1] && $string[3]) {
$port = (int)$string[1];
$mac = eregi_replace(" ","",$string[3]);
$ip = $compare[$mac];
if($port && $mac && $ip) {
// print "$switch_id = $port = $mac = $ip\n";
mysql_query("insert into pooler(sid, port, mac, ip, ptime) values($switch_id, $port, '".$mac."', '".$ip."', now())");
}
}
}
}
mysql_close($conn);
$script_end = date("H:i:s");
print "Begin: $script_begin, end $script_end.\n\n";
?>
В итоге получаем внятную статистику Switch-Port-IP-MAC-время опроса.
На 650 свичей скрипт отрабатывает 14-16 минут.
Код:
mysql> select * from pooler limit 0,10;
+-----+------+--------------+-----------------+---------------------+
| sid | port | mac | ip | ptime |
+-----+------+--------------+-----------------+---------------------+
| 592 | 26 | 001E58A7FA40 | 10.170.10.162 | 2009-05-09 17:34:33 |
| 592 | 26 | 001D60D45855 | 10.170.10.129 | 2009-05-09 17:34:33 |
| 592 | 26 | 001CC0299F66 | 10.170.10.156 | 2009-05-09 17:34:33 |
| 592 | 26 | 001B3843380E | 10.170.10.106 | 2009-05-09 17:34:33 |
| 592 | 26 | 0019DBAA14B1 | 10.170.10.130 | 2009-05-09 17:34:33 |
| 592 | 26 | 0019D1613739 | 192.168.111.211 | 2009-05-09 17:34:33 |
| 592 | 26 | 00179ABF9CA2 | 10.170.10.71 | 2009-05-09 17:34:33 |
| 592 | 26 | 001731AA1A0D | 192.168.111.204 | 2009-05-09 17:34:33 |
| 592 | 26 | 00173167123B | 10.170.10.31 | 2009-05-09 17:34:33 |
| 592 | 26 | 0017314BBF4A | 192.168.111.206 | 2009-05-09 17:34:33 |
+-----+------+--------------+-----------------+---------------------+
10 rows in set (0.09 sec)
_________________
Не важно откуда растут золотые руки ...
Жена:
http://6e6e6e.com Сын
http://sashablog.ru