1
0
mirror of https://github.com/librenms/librenms-agent.git synced 2024-05-09 09:54:52 +00:00
Files
librenms-librenms-agent/snmp/Openwrt/wlSNR.sh
00gh dea0b7176e snmp/Openwrt/wl*: Added stderr redirects in wl* scripts for iw/iwlist. (#440)
See Issue mentioned in librenms/librenms:
 #14428 OpenWRT example scripts give bad output if wireless interface is down.

Redirect the iw/iwlist command stderr output to /dev/null.

Co-authored-by: 00gh <00gh>
2022-11-19 20:59:09 -06:00

30 lines
1.1 KiB
Bash
Executable File

#!/bin/sh
# wlSNR.sh
# Returns wlSNR, Signal-to-Noise ratio in dB
# Arguments:
# $1: targeted interface
# $2: desired result (sum, avg, min, max)
# Check number of arguments
if [ $# -ne 2 ]; then
/bin/echo "Usage: wlSNR.sh interface result"
/bin/echo "Incorrect script usage, exiting."
exit 1
fi
# Calculate result. Sum just for debug, and return integer (safest / easiest)
snrlist=$(/usr/bin/iwinfo "$1" assoclist 2>/dev/null | /usr/bin/cut -s -d "/" -f 2 | /usr/bin/cut -s -d "(" -f 2 | /usr/bin/cut -s -d " " -f 2 | /usr/bin/cut -s -d ")" -f 1)
if [ "$2" = "sum" ]; then
result=$(/bin/echo "$snrlist" | /usr/bin/awk -F ':' '{sum += $1} END {printf "%d\n", sum}')
elif [ "$2" = "avg" ]; then
result=$(/bin/echo "$snrlist" | /usr/bin/awk -F ':' '{sum += $1} END {printf "%d\n", sum/NR}')
elif [ "$2" = "min" ]; then
result=$(/bin/echo "$snrlist" | /usr/bin/awk -F ':' 'NR == 1 || $1 < min {min = $1} END {printf "%d\n", min}')
elif [ "$2" = "max" ]; then
result=$(/bin/echo "$snrlist" | /usr/bin/awk -F ':' 'NR == 1 || $1 > max {max = $1} END {printf "%d\n", max}')
fi
# Return snmp result
echo "$result"