munin-contrib/plugins/dd-wrt/dd-wrt-wifi-devices_

104 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
# -*- sh -*-
set -o pipefail
: << =cut
=head1 NAME
dd-wrt-wifi-devices_ - How many Wifi devices are connected to a DD-WRT router?
Tested with DD-WRT v3.0-r44715
=head1 CONFIGURATION
Configure the hostname by adding the IP address to the symlink name:
Symlink "dd-wrt-wifi-devices_" to "dd-wrt-wifi-devices_192.168.1.1"
=head2 ENVIRONMENT VARIABLES
host - Hostname of router
user - Web interface username
password - Web interface password
host_name - To put the graph onto a different host
=head2 CONFIGURATION EXAMPLE
[dd-wrt-*]
env.user tpli
env.password thisismypassword
=head2 HOST MANAGEMENT
You can display the graph on another host (e.g., the actual router) than the
one running dd-wrt-wifi-devices.
To do so, first configure the plugin to use a different hostname.
env.host_name router
Then configure munin (in /etc/munin/munin-conf or /etc/munin/munin-conf.d)
to support a new host.
[example.net;router]
address 127.0.0.1
use_node_name no
=head1 REQUIREMENTS
"bash" and "curl" are required.
=head1 SEE ALSO
https://github.com/Tafkas/fritzbox-munin
=head1 AUTHOR
Christian Weiske <cweiske@cweiske.de>
=head1 LICENSE
AGPL-3.0-only https://spdx.org/licenses/AGPL-3.0-only.html
=head1 MAGIC MARKERS
#%# family=manual
=cut
if [ -z "$host" ]; then
host=$(basename "$0" | sed 's/dd-wrt-wifi-devices_//g')
fi
user=${user:-root}
pass=${password:-admin}
case $1 in
config)
echo "graph_title DD-WRT $host connected Wifi devices"
echo "graph_vlabel Number of devices"
echo "graph_args --base 1000"
echo "graph_category network"
echo "graph_order wifi"
echo "wifi.label Wifi Connections"
echo "wifi.type GAUGE"
echo "wifi.graph LINE1"
if [ -n "$host_name" ]; then
echo "host_name $host_name"
fi
exit 0;;
esac
url="http://$host/Status_Wireless.live.asp"
count=$(
curl --silent --show-error --fail --user "$user:$pass" --max-time 3 "$url"\
| grep -o 'assoc_count::[0-9]*'\
| cut -d':' -f 3
)
#without "-o pipefail" we would not get curl's exit code here
exitcode=$?
if [ "$exitcode" -gt 0 ]; then
count="U"
fi
echo "wifi.value $count"