ahoj,
pokud by nekdo chtel monitorovat a grafovat nejake hodnoty z airfiberu:
af24stat.php
#!/etc/alternatives/php -q
<?php
#
# jan@panoch.net 20121019
#
#####################################################
# functions
#####################################################
#
# get status variables from AirFiber unit
#
function get_ubnt_stats($ip,$user,$pass) {
$cookie_file = tempnam('/tmp', 'status-cookie');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://' . $ip);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 2);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
$result = curl_exec($ch);
if (!strstr($result, 'AIROS_SESSIONID')) {
unlink($cookie_file);
return false;
}
$radio_data = 0;
$login_post_data = array (
'uri' => '/status.cgi',
'username' => $user,
'password' => $pass,
'Submit' => 'Login'
);
curl_setopt($ch, CURLOPT_HTTPHEADER, Array('Expect: '));
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, 'http://' . $ip . '/login.cgi');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $login_post_data);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
$result = curl_exec($ch);
unlink($cookie_file);
if ($result) {
$data = json_decode($result);
return $data;
}
}
#
# walk through data structure
#
function walk_data (&$vars,$id,$data) {
if (is_object($data) || is_array($data)) {
# recurse into data
foreach ($data as $key => $val) {
$vid = $id ? "$id.$key" : $key;
walk_data($vars,$vid,$val);
}
} else {
# we are at the end of recursion
$vars[$id] = $data;
}
}
#####################################################
# main
#####################################################
#
# set time limit
#
set_time_limit(0);
#
# get vars from command line
#
if ($argc<5) {
print "usage: af24mcastat.php <host> <user> <pass> <var1> [<var2>]\n";
exit;
}
$host = $argv[1];
$user = $argv[2];
$pass = $argv[3];
$var1 = $argv[4];
if ($argc>5) {
$var2 = $argv[5];
} else {
$var2 = "";
}
#
# get data from airfiber unit
#
$data = get_ubnt_stats($host,$user,$pass);
if (!$data) {
exit;
}
#
# create vars array
#
$vars = array();
walk_data($vars,"",$data);
#
# calculate some variables
#
if ($vars['gps.dop']>20) { $vars['gps.quality'] = 10; }
elseif ($vars['gps.dop']>15) { $vars['gps.quality'] = 20; }
elseif ($vars['gps.dop']>10) { $vars['gps.quality'] = 30; }
elseif ($vars['gps.dop']>7) { $vars['gps.quality'] = 40; }
elseif ($vars['gps.dop']>5) { $vars['gps.quality'] = 50; }
elseif ($vars['gps.dop']>3.5) { $vars['gps.quality'] = 60; }
elseif ($vars['gps.dop']>2) { $vars['gps.quality'] = 70; }
elseif ($vars['gps.dop']>1.5) { $vars['gps.quality'] = 80; }
elseif ($vars['gps.dop']>1) { $vars['gps.quality'] = 90; }
elseif ($vars['gps.dop']>0) { $vars['gps.quality'] = 100; }
#
# output variables
#
print $vars[$var1]."\n";
if ($var2) {
if (array_key_exists($var2,$vars)) {
print $vars[$var2]."\n";
} else {
print "$var2\n";
}
} else {
print "0\n";
}
?>
definice pro mrtg (zatim jen teplota a gps - zatim jeste nemam druhou stranu a link):
#
# airfiber - temperature
#
Title[airfiber-test-temp]: airfiber temp
MaxBytes[airfiber-test-temp]: 10000
AbsMax[airfiber-test-temp]: 20000
Options[airfiber-test-temp]: gauge, growright
Target[airfiber-test-temp]: `/root/mrtg/af24stat.php 10.19.19.254:8080 ubnt ubnt airfiber.dactemp0 airfiber.dactemp1`
PageTop[airfiber-test-temp]: <H1>airfber temp</H1>
ShortLegend[airfiber-test-temp]: temp
YLegend[airfiber-test-temp]: temp
Legend1[airfiber-test-temp]: temp
LegendI[airfiber-test-temp]: temp0:
LegendO[airfiber-test-temp]: temp1:
WithPeak[airfiber-test-temp]: ymwd
#
# airfiber - gps quality
#
Title[airfiber-test-gpsquality]: airfiber - gps quality
MaxBytes[airfiber-test-gpsquality]: 10000
AbsMax[airfiber-test-gpsquality]: 20000
Options[airfiber-test-gpsquality]: gauge, growright
Target[airfiber-test-gpsquality]: `/root/mrtg/af24stat.php 10.19.19.254:8080 ubnt ubnt gps.quality 100`
PageTop[airfiber-test-gpsquality]: <H1>airfiber - gps quality</H1>
ShortLegend[airfiber-test-gpsquality]: gps
YLegend[airfiber-test-gpsquality]: gps
Legend1[airfiber-test-gpsquality]: gps
LegendI[airfiber-test-gpsquality]: gps%:
LegendO[airfiber-test-gpsquality]: 100%:
WithPeak[airfiber-test-gpsquality]: ymwd
vsechny promenne, ktere je mozne pouzit - viz zde:
[host.uptime] => 5803
[host.time] => 2012-09-04 19:02:30
[host.fwversion] => v1.0
[host.hostname] => UBNT
[host.netrole] => airfiber
[wireless.mode] => airfiber
[wireless.essid] => UBNT
[wireless.hide_essid] => 0
[wireless.apmac] => 00:00:00:00:00:00
[wireless.countrycode] => 84
[wireless.channel] => 11
[wireless.frequency] => 24100 MHz
[wireless.dfs] => 0
[wireless.opmode] => slave
[wireless.antenna] => External
[wireless.chains] => 1X1
[wireless.signal] => 24
[wireless.rssi] => 0
[wireless.noisef] => 0
[wireless.ack] => 0
[wireless.distance] => 0
[wireless.ccq] => 0
[wireless.txrate] => 1
[wireless.rxrate] => 0
[wireless.security] => AES-128
[wireless.qos] => No QoS
[wireless.rstatus] => 1
[wireless.count] => 1
[wireless.polling.enabled] => 0
[wireless.polling.quality] => 0
[wireless.polling.capacity] => 0
[wireless.polling.priority] => 0
[wireless.polling.noack] => 0
[wireless.polling.airsync_mode] => 0
[wireless.polling.airsync_connections] => 0
[wireless.polling.airsync_down_util] => 0
[wireless.polling.airsync_up_util] => 0
[wireless.polling.airselect] => 0
[wireless.polling.airselect_interval] => 0
[wireless.stats.rx_nwids] => 0
[wireless.stats.rx_crypts] => 0
[wireless.stats.rx_frags] => 0
[wireless.stats.tx_retries] => 0
[wireless.stats.missed_beacons] => 0
[wireless.stats.err_other] => 0
[wireless.wds] => 0
[wireless.aprepeater] => 0
[wireless.chwidth] => 100
[wireless.chanbw] => 100
[wireless.cwmmode] => 0
[wireless.rx_chainmask] => 1
[wireless.tx_chainmask] => 1
[wireless.chainrssi.0] => 0
[wireless.chainrssi.1] => 0
[wireless.chainrssi.2] => 0
[wireless.chainrssimgmt.0] => 0
[wireless.chainrssimgmt.1] => 0
[wireless.chainrssimgmt.2] => 0
[wireless.chainrssiext.0] => 0
[wireless.chainrssiext.1] => 0
[wireless.chainrssiext.2] => 0
[airfiber.enabled] => 1
[airfiber.linkmode] => slave
[airfiber.linkstate] => syncing
[airfiber.duplex] => half
[airfiber.tx_frequency] => 24100
[airfiber.rx_frequency] => 24100
[airfiber.regdomain] => none
[airfiber.gps_sync] => 1
[airfiber.tdelay] => 0
[airfiber.rxcapacity] => 0
[airfiber.txcapacity] => 0
[airfiber.dactemp0] => 34
[airfiber.dactemp1] => 34
[airfiber.rxpower0] => -1000
[airfiber.rxpower1] => -1000
[airfiber.rxpower0valid] => 1
[airfiber.rxpower1valid] => 1
[airfiber.rxoverload0] => 0
[airfiber.rxoverload1] => 0
[airfiber.remote_txpower] => n/a
[airfiber.remote_rxpower0] => -1000
[airfiber.remote_rxpower1] => -1000
[airfiber.remote_rxpower0valid] => 1
[airfiber.remote_rxpower1valid] => 1
[airfiber.remote_rxoverload0] => 0
[airfiber.remote_rxoverload1] => 0
[airfiber.txmodrate] => 1x
[airfiber.remote_txmodrate] => n/a
[airfiber.data_speed] => 1000Mbps-Full
[airview.enabled] => 0
[services.dhcpc] => 0
[services.dhcpd] => 0
[services.pppoe] => 0
[firewall.iptables] => 0
[firewall.ebtables] => 1
[genuine] => /images/genuine.png
[interfaces.0.ifname] => lo
[interfaces.0.hwaddr] => 00:00:00:00:00:00
[interfaces.0.enabled] => 1
[interfaces.0.status.plugged] => 1
[interfaces.0.status.speed] => 0
[interfaces.0.status.duplex] => 255
[interfaces.0.services.dhcpc] =>
[interfaces.0.services.dhcpd] =>
[interfaces.0.services.pppoe] =>
[interfaces.1.ifname] => sit0
[interfaces.1.hwaddr] => 00:00:00:00:00:00
[interfaces.1.enabled] =>
[interfaces.1.status.plugged] => 0
[interfaces.1.status.speed] => 0
[interfaces.1.status.duplex] => 255
[interfaces.1.services.dhcpc] =>
[interfaces.1.services.dhcpd] =>
[interfaces.1.services.pppoe] =>
[interfaces.2.ifname] => eth0
[interfaces.2.hwaddr] => 00:27:22:DA:18:62
[interfaces.2.enabled] => 1
[interfaces.2.status.plugged] => 1
[interfaces.2.status.speed] => 100
[interfaces.2.status.duplex] => 1
[interfaces.2.services.dhcpc] =>
[interfaces.2.services.dhcpd] =>
[interfaces.2.services.pppoe] =>
[interfaces.3.ifname] => air0
[interfaces.3.hwaddr] => 02:27:22:DA:18:62
[interfaces.3.enabled] => 1
[interfaces.3.status.plugged] => 1
[interfaces.3.status.speed] => 0
[interfaces.3.status.duplex] => 255
[interfaces.3.services.dhcpc] =>
[interfaces.3.services.dhcpd] =>
[interfaces.3.services.pppoe] =>
[interfaces.4.ifname] => br0
[interfaces.4.hwaddr] => 02:27:22:DA:18:62
[interfaces.4.enabled] => 1
[interfaces.4.status.plugged] => 1
[interfaces.4.status.speed] => 0
[interfaces.4.status.duplex] => 255
[interfaces.4.services.dhcpc] =>
[interfaces.4.services.dhcpd] =>
[interfaces.4.services.pppoe] =>
[gps.status] => 1
[gps.fix] => 1
[gps.sats] => 7
[gps.dop] => 1.05
[gps.lat] => 50.125782
[gps.lon] => 0
[gps.alt] => 284.899994
[gps.quality] => 80
Jap