From 1ddbacb7ceb4161c0764dd3fb39730fc1144560a Mon Sep 17 00:00:00 2001 From: Adam Amstrong Date: Tue, 13 Oct 2009 11:11:46 +0000 Subject: [PATCH] newer new poller git-svn-id: http://www.observium.org/svn/observer/trunk@485 61d68cd4-352d-0410-923a-c4978735b2b8 --- new-poller.php | 41 ++++++++++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/new-poller.php b/new-poller.php index 1edd0e364..b08747a2b 100755 --- a/new-poller.php +++ b/new-poller.php @@ -4,36 +4,51 @@ include("config.php"); include("includes/functions.php"); -if($argv[1]) { $where = "WHERE `device_id` = '$argv[1]'"; } +if($argv[1]) { $where = "AND `device_id` = '$argv[1]'"; } -function snmp_array($oid, $device, $mib = 0) { +function snmp_array($oid, $device, $array, $mib = 0) { global $config; $cmd = $config['snmpbulkwalk'] . " -O Qs -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port'] . " "; if($mib) { $cmd .= "-m $mib "; } $cmd .= $oid; $data = trim(shell_exec($cmd)); - $array = array(); $device_id = $device['device_id']; foreach(explode("\n", $data) as $entry) { - list ($this_oid, $this_value) = split(" = ", $entry); + list ($this_oid, $this_value) = split("=", $entry); list ($this_oid, $this_index) = explode(".", $this_oid); - $array[$device_id][$this_oid][$this_index] = $this_value; + $this_index = trim($this_index); + $this_oid = trim($this_oid); + $this_value = trim($this_value); + if(!strstr($this_value, "No Such Instance currently exists at this OID") && $this_index) { + $array[$device_id][$this_index][$this_oid] = $this_value; + } } return $array; } -$interface_data = array(); -$device_query = mysql_query("SELECT * FROM `devices` $where ORDER BY device_id DESC"); +$i = 0; +$device_query = mysql_query("SELECT * FROM `devices` WHERE `ignore` = '0' AND `disabled` = '0' AND `status` = '1' $where ORDER BY device_id DESC"); while ($device = mysql_fetch_array($device_query)) { - - $oids = array('ifName','ifDescr','ifAlias'); - foreach ($oids as $oid) { - $entries = snmp_array($oid, $device); - $interface_data = @array_merge($entries, $interface_data); + echo($device['hostname'] . "\n"); + $i++; + $data_oids = array('ifName','ifDescr','ifAlias', 'ifAdminStatus', 'ifOperStatus', 'ifMtu', 'ifSpeed', 'ifHCSpeed', 'ifType', 'ifPhysAddress'); + $stat_oids = array('ifHCInOctets', 'ifHCOutOctets', 'ifInErrors', 'ifOutErrors', 'ifInUcastPkts', 'ifOutUcastPkts', 'ifInNUcastPkts', 'ifOutNUcastPkts'); + $cisco_oids = array('locIfHardType', 'vmVlan', 'vlanTrunkPortEncapsulationOperType'); + foreach ($data_oids as $oid) { + $array = snmp_array($oid, $device, $array); } - print_r($interface_data); + foreach ($stat_oids as $oid) { + $array = snmp_array($oid, $device, $array); + } + foreach ($cisco_oids as $oid) { + $array = snmp_array($oid, $device, $array, "CISCO-SMI:CISCO-VLAN-MEMBERSHIP-MIB:CISCO-VTP-MIB"); + } + + print_r($array); } +echo("$i devices polled"); + ?>