![]() ![]() |
weathermap |
Subversion Repositories: |
Compare with Previous - Blame - Download
<?php// Pluggable datasource for PHP Weathermap 0.9// - return a live SNMP value// doesn't work well with large values like interface counters (I think this is a rounding problem)// - also it doesn't calculate rates. Just fetches a value.// useful for absolute GAUGE-style values like DHCP Lease Counts, Wireless AP Associations, Firewall Sessions// which you want to use to colour a NODE// You could also fetch interface states from IF-MIB with it.// TARGET snmp:public:hostname:1.3.6.1.4.1.3711.1.1:1.3.6.1.4.1.3711.1.2// (that is, TARGET snmp:community:host:in_oid:out_oidclass WeatherMapDataSource_snmp extends WeatherMapDataSource {function Init(&$map){if(function_exists('snmpget')) { return(TRUE); }debug("SNMP DS: snmpget() not found. Do you have the PHP SNMP module?\n");return(FALSE);}function Recognise($targetstring){if(preg_match("/^snmp:([^:]+):([^:]+):([^:]+):([^:]+)$/",$targetstring,$matches)){return TRUE;}else{return FALSE;}}function ReadData($targetstring, &$map, &$item){$inbw=-1;$outbw=-1;$data_time=0;if(preg_match("/^snmp:([^:]+):([^:]+):([^:]+):([^:]+)$/",$targetstring,$matches)){$community = $matches[1];$host = $matches[2];$in_oid = $matches[3];$out_oid = $matches[4];$was = snmp_get_quick_print();snmp_set_quick_print(1);$in_result = snmpget($host,$community,$in_oid,1000000,2);$out_result = snmpget($host,$community,$out_oid,1000000,2);debug ("SNMP ReadData: Got $in_result and $out_result\n");if($in_result) { $in_bw = $in_result; }if($out_result) { $out_bw = $out_result;}$data_time = time();snmp_set_quick_print($was);}debug ("SNMP ReadData: Returning ($inbw,$outbw,$data_time)\n");return ( array($inbw,$outbw,$data_time) );}}// vim:ts=4:sw=4:?>