From 99763204d50dd18d2b3fe34bf500a3e8b0c16405 Mon Sep 17 00:00:00 2001 From: Christian Weiske Date: Sat, 19 Feb 2022 06:34:18 +0100 Subject: [PATCH] Add dd-wrt-wifi-devices plugin .. to monitor the number of connected WiFi devices on a DD-WRT based router --- plugins/dd-wrt/dd-wrt-wifi-devices_ | 103 ++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100755 plugins/dd-wrt/dd-wrt-wifi-devices_ diff --git a/plugins/dd-wrt/dd-wrt-wifi-devices_ b/plugins/dd-wrt/dd-wrt-wifi-devices_ new file mode 100755 index 00000000..bd7176e8 --- /dev/null +++ b/plugins/dd-wrt/dd-wrt-wifi-devices_ @@ -0,0 +1,103 @@ +#!/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 + +=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"