| 
									
										
										
										
											2009-09-07 11:07:59 +00:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-07 11:08:08 +00:00
										 |  |  | /* FIXME: dead file */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-16 17:57:40 +00:00
										 |  |  | if ($device['os_group'] == "ios") { | 
					
						
							| 
									
										
										
										
											2009-10-09 08:33:01 +00:00
										 |  |  |   $portifIndex = array(); | 
					
						
							| 
									
										
										
										
											2011-03-16 17:57:40 +00:00
										 |  |  |   $cmd = ($device['snmpver'] == 'v1' ? $config['snmpwalk'] : $config['snmpbulkwalk']) . " -M ".$config['mibdir']. " -CI -m CISCO-STACK-MIB -O q -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port'] . " portIfIndex"; | 
					
						
							| 
									
										
										
										
											2009-10-28 13:49:37 +00:00
										 |  |  |   #echo("$cmd");
 | 
					
						
							| 
									
										
										
										
											2009-10-09 08:33:01 +00:00
										 |  |  |   $portifIndex_output = trim(shell_exec($cmd)); | 
					
						
							| 
									
										
										
										
											2011-03-16 01:11:27 +00:00
										 |  |  |   foreach (explode("\n", $portifIndex_output) as $entry){ | 
					
						
							| 
									
										
										
										
											2009-10-09 08:33:01 +00:00
										 |  |  |     $entry = str_replace("CISCO-STACK-MIB::portIfIndex.", "", $entry); | 
					
						
							|  |  |  |     list($slotport, $ifIndex) = explode(" ", $entry); | 
					
						
							|  |  |  |     $portifIndex[$ifIndex] = $slotport; | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2011-03-16 01:11:27 +00:00
										 |  |  |   if ($debug) { print_r($portifIndex); } | 
					
						
							| 
									
										
										
										
											2009-10-09 08:33:01 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-20 17:22:22 +00:00
										 |  |  | $interface_query = mysql_query("SELECT * FROM `ports` $where"); | 
					
						
							| 
									
										
										
										
											2011-04-06 13:54:50 +00:00
										 |  |  | while ($interface = mysql_fetch_assoc($interface_query)) { | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-06 13:54:50 +00:00
										 |  |  |  if (!$device) { $device = mysql_fetch_assoc(mysql_query("SELECT * FROM `devices` WHERE `device_id` = '" . $interface['device_id'] . "'")); } | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |  unset($ifAdminStatus, $ifOperStatus, $ifAlias, $ifDescr); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  $interface['hostname'] = $device['hostname']; | 
					
						
							|  |  |  |  $interface['device_id'] = $device['device_id']; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-16 01:11:27 +00:00
										 |  |  |  if ($device['status'] == '1') { | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-20 11:53:19 +00:00
										 |  |  |    unset($update); | 
					
						
							|  |  |  |    unset($update_query); | 
					
						
							|  |  |  |    unset($seperator); | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-20 11:53:19 +00:00
										 |  |  |    echo("Looking at " . $interface['ifDescr'] . " on " . $device['hostname'] . "\n"); | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-02 19:58:13 +00:00
										 |  |  |    $snmp_cmd  = $config['snmpget'] . " -M ".$config['mibdir'] . " -m IF-MIB -O qv -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port']; | 
					
						
							| 
									
										
										
										
											2009-09-18 09:11:52 +00:00
										 |  |  |    $snmp_cmd .= " ifAdminStatus." . $interface['ifIndex'] . " ifOperStatus." . $interface['ifIndex'] . " ifAlias." . $interface['ifIndex'] . " ifName." . $interface['ifIndex']; | 
					
						
							|  |  |  |    $snmp_cmd .= " ifDescr." . $interface['ifIndex']; | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-28 15:47:03 +00:00
										 |  |  |    $snmp_output = trim(shell_exec($snmp_cmd)); | 
					
						
							| 
									
										
										
										
											2008-03-20 11:53:19 +00:00
										 |  |  |    $snmp_output = str_replace("No Such Object available on this agent at this OID", "", $snmp_output); | 
					
						
							|  |  |  |    $snmp_output = str_replace("No Such Instance currently exists at this OID", "", $snmp_output); | 
					
						
							|  |  |  |    $snmp_output = str_replace("\"", "", $snmp_output); | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-18 09:11:52 +00:00
										 |  |  |    list($ifAdminStatus, $ifOperStatus, $ifAlias, $ifName, $ifDescr) = explode("\n", $snmp_output); | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-02 15:57:38 +00:00
										 |  |  |    $ifAdminStatus = translate_ifAdminStatus ($ifAdminStatus); | 
					
						
							|  |  |  |    $ifOperStatus = translate_ifOperStatus ($ifOperStatus); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-20 11:53:19 +00:00
										 |  |  |    if ($ifAlias == " ") { $ifAlias = str_replace(" ", "", $ifAlias); } | 
					
						
							|  |  |  |    $ifAlias = trim(str_replace("\"", "", $ifAlias)); | 
					
						
							|  |  |  |    $ifAlias = trim($ifAlias); | 
					
						
							| 
									
										
										
										
											2008-11-21 14:44:29 +00:00
										 |  |  |    $ifDescr = trim(str_replace("\"", "", $ifDescr)); | 
					
						
							|  |  |  |    $ifDescr = trim($ifDescr); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-09 08:33:01 +00:00
										 |  |  |    $ifIndex = $interface['ifIndex']; | 
					
						
							| 
									
										
										
										
											2011-03-16 17:57:40 +00:00
										 |  |  |    if ($portifIndex[$ifIndex]) { | 
					
						
							| 
									
										
										
										
											2011-03-16 01:11:27 +00:00
										 |  |  |      if ($device['os'] == "CatOS") { | 
					
						
							| 
									
										
										
										
											2010-07-02 19:58:13 +00:00
										 |  |  |        $cmd = $config['snmpget'] . " -M ".$config['mibdir'] . " -m CISCO-STACK-MIB -O qv -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port'] . " portName." . $portifIndex[$ifIndex]; | 
					
						
							| 
									
										
										
										
											2009-10-09 08:33:01 +00:00
										 |  |  |        $ifAlias = trim(shell_exec($cmd)); | 
					
						
							|  |  |  |      } | 
					
						
							|  |  |  |    } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-16 01:11:27 +00:00
										 |  |  |    if ($config['os'][$device[os]]['ifname']) { $ifDescr = $ifName; } | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-16 17:57:40 +00:00
										 |  |  |    $rrdfile = $host_rrd . "/" . safename($interface['ifIndex'] . ".rrd"); | 
					
						
							| 
									
										
										
										
											2008-03-12 13:13:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-16 01:11:27 +00:00
										 |  |  |    if (!is_file($rrdfile)) { | 
					
						
							| 
									
										
										
										
											2011-03-10 15:51:56 +00:00
										 |  |  |      rrdtool_create($rrdfile,"DS:INOCTETS:COUNTER:600:0:12500000000 \
 | 
					
						
							| 
									
										
										
										
											2008-11-20 14:58:11 +00:00
										 |  |  |       DS:OUTOCTETS:COUNTER:600:0:12500000000 \ | 
					
						
							|  |  |  |       DS:INERRORS:COUNTER:600:0:12500000000 \ | 
					
						
							|  |  |  |       DS:OUTERRORS:COUNTER:600:0:12500000000 \ | 
					
						
							|  |  |  |       DS:INUCASTPKTS:COUNTER:600:0:12500000000 \ | 
					
						
							|  |  |  |       DS:OUTUCASTPKTS:COUNTER:600:0:12500000000 \ | 
					
						
							|  |  |  |       DS:INNUCASTPKTS:COUNTER:600:0:12500000000 \ | 
					
						
							|  |  |  |       DS:OUTNUCASTPKTS:COUNTER:600:0:12500000000 \ | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  |       RRA:AVERAGE:0.5:1:600 \ | 
					
						
							|  |  |  |       RRA:AVERAGE:0.5:6:700 \ | 
					
						
							|  |  |  |       RRA:AVERAGE:0.5:24:775 \ | 
					
						
							|  |  |  |       RRA:AVERAGE:0.5:288:797 \ | 
					
						
							|  |  |  |       RRA:MAX:0.5:1:600 \ | 
					
						
							|  |  |  |       RRA:MAX:0.5:6:700 \ | 
					
						
							|  |  |  |       RRA:MAX:0.5:24:775 \ | 
					
						
							| 
									
										
										
										
											2009-03-24 11:16:50 +00:00
										 |  |  |       RRA:MAX:0.5:288:797");
 | 
					
						
							| 
									
										
										
										
											2008-03-20 11:53:19 +00:00
										 |  |  |    } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-16 01:11:27 +00:00
										 |  |  |    if (file_exists("includes/polling/interface-" . $device['os'] . ".php") ) { include("includes/polling/interface-" . $device['os'] . ".php"); } | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-16 01:11:27 +00:00
										 |  |  |    if ($interface['ifDescr'] != $ifDescr && $ifDescr != "" ) { | 
					
						
							| 
									
										
										
										
											2009-09-18 09:11:52 +00:00
										 |  |  |      $update .= $seperator . "`ifDescr` = '$ifDescr'"; | 
					
						
							|  |  |  |      $seperator = ", "; | 
					
						
							| 
									
										
										
										
											2010-01-07 16:50:52 +00:00
										 |  |  |      eventlog("ifDescr -> $ifDescr", $interface['device_id'], $interface['interface_id']); | 
					
						
							| 
									
										
										
										
											2009-09-18 09:11:52 +00:00
										 |  |  |    } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-16 01:11:27 +00:00
										 |  |  |    if ($interface['ifName'] != $ifName && $ifName != "" ) { | 
					
						
							| 
									
										
										
										
											2009-09-18 09:11:52 +00:00
										 |  |  |      $update .= $seperator . "`ifName` = '$ifName'"; | 
					
						
							|  |  |  |      $seperator = ", "; | 
					
						
							| 
									
										
										
										
											2010-01-07 16:50:52 +00:00
										 |  |  |      eventlog("ifName -> $ifName", $interface['device_id'], $interface['interface_id']); | 
					
						
							| 
									
										
										
										
											2009-09-18 09:11:52 +00:00
										 |  |  |    } | 
					
						
							| 
									
										
										
										
											2011-03-16 17:57:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-16 01:11:27 +00:00
										 |  |  |    if ($interface['ifAlias'] != $ifAlias && $ifAlias != "" ) { | 
					
						
							| 
									
										
										
										
											2010-02-21 11:58:07 +00:00
										 |  |  |      $update .= $seperator . "`ifAlias` = '".mres($ifAlias)."'"; | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  |      $seperator = ", "; | 
					
						
							| 
									
										
										
										
											2010-01-07 16:50:52 +00:00
										 |  |  |      eventlog("ifAlias -> $ifAlias", $interface['device_id'], $interface['interface_id']); | 
					
						
							| 
									
										
										
										
											2008-03-20 11:53:19 +00:00
										 |  |  |    } | 
					
						
							| 
									
										
										
										
											2011-03-16 01:11:27 +00:00
										 |  |  |    if ($interface['ifOperStatus'] != $ifOperStatus && $ifOperStatus != "" ) { | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  |      $update .= $seperator . "`ifOperStatus` = '$ifOperStatus'"; | 
					
						
							|  |  |  |      $seperator = ", "; | 
					
						
							| 
									
										
										
										
											2010-01-07 16:50:52 +00:00
										 |  |  |      eventlog("Interface went $ifOperStatus", $interface['device_id'], $interface['interface_id']); | 
					
						
							| 
									
										
										
										
											2008-03-20 11:53:19 +00:00
										 |  |  |    } | 
					
						
							| 
									
										
										
										
											2011-03-16 01:11:27 +00:00
										 |  |  |    if ($interface['ifAdminStatus'] != $ifAdminStatus && $ifAdminStatus != "" ) { | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  |      $update .= $seperator . "`ifAdminStatus` = '$ifAdminStatus'"; | 
					
						
							|  |  |  |      $seperator = ", "; | 
					
						
							| 
									
										
										
										
											2011-03-16 01:11:27 +00:00
										 |  |  |      if ($ifAdminStatus == "up") { $admin = "enabled"; } else { $admin = "disabled"; } | 
					
						
							| 
									
										
										
										
											2010-01-07 16:50:52 +00:00
										 |  |  |      eventlog("Interface $admin", $interface['device_id'], $interface['interface_id']); | 
					
						
							| 
									
										
										
										
											2008-03-20 11:53:19 +00:00
										 |  |  |    } | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-20 11:53:19 +00:00
										 |  |  |    if ($update) { | 
					
						
							| 
									
										
										
										
											2010-02-20 17:22:22 +00:00
										 |  |  |      $update_query  = "UPDATE `ports` SET "; | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  |      $update_query .= $update; | 
					
						
							|  |  |  |      $update_query .= " WHERE `interface_id` = '" . $interface['interface_id'] . "'"; | 
					
						
							| 
									
										
										
										
											2009-10-28 13:49:37 +00:00
										 |  |  |      #echo("Updating : " . $device['hostname'] . " $ifDescr\nSQL :$update_query\n\n");
 | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  |      $update_result = mysql_query($update_query); | 
					
						
							| 
									
										
										
										
											2008-03-20 11:53:19 +00:00
										 |  |  |    } else { | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  | #     echo("Not Updating : " . $device['hostname'] ." $ifDescr ( " . $interface['ifDescr'] . " )\n\n");
 | 
					
						
							| 
									
										
										
										
											2008-03-20 11:53:19 +00:00
										 |  |  |    } | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-16 01:11:27 +00:00
										 |  |  |    if ($ifOperStatus == "up") { | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-02 19:58:13 +00:00
										 |  |  |     $snmp_data_cmd  = $config['snmpget'] . " -M ".$config['mibdir'] . " -m IF-MIB -O qv -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port']; | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  |     $snmp_data_cmd .= " ifHCInOctets." . $interface['ifIndex'] . " ifHCOutOctets." . $interface['ifIndex'] . " ifInErrors." . $interface['ifIndex']; | 
					
						
							|  |  |  |     $snmp_data_cmd .= " ifOutErrors." . $interface['ifIndex'] . " ifInUcastPkts." . $interface['ifIndex'] . " ifOutUcastPkts." . $interface['ifIndex']; | 
					
						
							|  |  |  |     $snmp_data_cmd .= " ifInNUcastPkts." . $interface['ifIndex'] . " ifOutNUcastPkts." . $interface['ifIndex']; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-28 15:47:03 +00:00
										 |  |  |     $snmp_data = shell_exec($snmp_data_cmd); | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     $snmp_data = str_replace("Wrong Type (should be Counter32): ","", $snmp_data); | 
					
						
							|  |  |  |     $snmp_data = str_replace("No Such Instance currently exists at this OID","", $snmp_data); | 
					
						
							|  |  |  |     list($ifHCInOctets, $ifHCOutOctets, $ifInErrors, $ifOutErrors, $ifInUcastPkts, $ifOutUcastPkts, $ifInNUcastPkts, $ifOutNUcastPkts) = explode("\n", $snmp_data); | 
					
						
							| 
									
										
										
										
											2011-03-16 01:11:27 +00:00
										 |  |  |     if ($ifHCInOctets == "" || strpos($ifHCInOctets, "No") !== FALSE ) { | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-02 19:58:13 +00:00
										 |  |  |       $octets_cmd  = $config['snmpget'] . " -M ".$config['mibdir'] . " -m IF-MIB -O qv -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port']; | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  |       $octets_cmd .= " ifInOctets." . $interface['ifIndex'] . " ifOutOctets." . $interface['ifIndex']; | 
					
						
							| 
									
										
										
										
											2009-04-28 15:47:03 +00:00
										 |  |  |       $octets = shell_exec($octets_cmd); | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  |       list ($ifHCInOctets, $ifHCOutOctets) = explode("\n", $octets); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |      $woo = "N:$ifHCInOctets:$ifHCOutOctets:$ifInErrors:$ifOutErrors:$ifInUcastPkts:$ifOutUcastPkts:$ifInNUcastPkts:$ifOutNUcastPkts"; | 
					
						
							|  |  |  |      $ret = rrdtool_update("$rrdfile", $woo); | 
					
						
							| 
									
										
										
										
											2008-03-22 13:30:33 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  |    } else { | 
					
						
							| 
									
										
										
										
											2009-10-28 13:49:37 +00:00
										 |  |  |      #echo("Interface " . $device['hostname'] . " " . $interface['ifDescr'] . " is down\n");
 | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  |   } | 
					
						
							|  |  |  |  } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-23 21:13:56 +00:00
										 |  |  |   $rates = interface_rates ($rrdfile); | 
					
						
							| 
									
										
										
										
											2010-02-20 17:22:22 +00:00
										 |  |  |   mysql_query("UPDATE `ports` SET in_rate = '" . $rates['in'] . "', out_rate = '" . $rates['out'] . "' WHERE interface_id= '" . $interface['interface_id'] . "'"); | 
					
						
							| 
									
										
										
										
											2008-03-09 21:13:27 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-09 08:33:01 +00:00
										 |  |  | unset($portifIndex); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-17 14:27:40 +00:00
										 |  |  | ?>
 |