Révision 81bf32a5
[network/upnpc_] Cleanup shell code and centralise call to upnpc
Signed-off-by: Olivier Mehani <shtrom@ssji.net>
| plugins/network/upnpc_ | ||
|---|---|---|
| 1 |
#!/bin/sh |
|
| 1 |
#!/bin/sh -u
|
|
| 2 | 2 |
# -*- sh -*- |
| 3 | 3 |
|
| 4 | 4 |
: << =cut |
| ... | ... | |
| 16 | 16 |
|
| 17 | 17 |
=head1 APPLICABLE SYSTEMS |
| 18 | 18 |
|
| 19 |
Linux systems with upnpc installed. |
|
| 19 |
Linux systems with upnpc installed (miniupnpc package).
|
|
| 20 | 20 |
|
| 21 | 21 |
=head1 CONFIGURATION |
| 22 | 22 |
|
| ... | ... | |
| 24 | 24 |
|
| 25 | 25 |
=head1 AUTHOR |
| 26 | 26 |
|
| 27 |
Olivier Mehani <shtrom+munin@ssji.net> |
|
| 27 |
Olivier Mehani |
|
| 28 |
|
|
| 29 |
Copyright (C) 2016,2019 Olivier Mehani <shtrom+munin@ssji.net> |
|
| 28 | 30 |
|
| 29 | 31 |
=head1 LICENSE |
| 30 | 32 |
|
| 31 |
SPDX-License-Identifier: GPL-2.0-or-later
|
|
| 33 |
SPDX-License-Identifier: GPL-3.0-or-later
|
|
| 32 | 34 |
|
| 33 | 35 |
=head1 MAGIC MARKERS |
| 34 | 36 |
|
| ... | ... | |
| 37 | 39 |
|
| 38 | 40 |
=cut |
| 39 | 41 |
|
| 42 |
if [ "${MUNIN_DEBUG:-0}" = 1 ]; then
|
|
| 43 |
set -x |
|
| 44 |
fi |
|
| 45 |
|
|
| 46 |
if ! command -v upnpc >/dev/null; then |
|
| 47 |
echo "upnpc not found (miniupnpc package)" >&2 |
|
| 48 |
exit 1 |
|
| 49 |
fi |
|
| 50 |
|
|
| 51 |
PLUGIN_NAME="$(basename "${0}")"
|
|
| 52 |
MODE="$(echo "${PLUGIN_NAME}" | sed 's/.*_//')"
|
|
| 53 |
DATA="$(upnpc -s)" |
|
| 54 |
SUPPORTED_MODES=$( |
|
| 55 |
echo "${DATA}" | sed -n " \
|
|
| 56 |
s/.*Bytes.*/traffic/p; \ |
|
| 57 |
s/.*MaxBitRate.*/bitrate/p; \ |
|
| 58 |
s/.*Packets.*/pkts/p; \ |
|
| 59 |
s/.*uptime=.*/uptime/p; \ |
|
| 60 |
") |
|
| 61 |
|
|
| 40 | 62 |
autoconf() {
|
| 41 |
which upnpc >/dev/null && upnpc -s >/dev/null 2>&1 && echo yes || echo "no (No upnpc or no UPnP router)"
|
|
| 63 |
test -n "${DATA}" && echo yes || echo "no (No UPnP router detected)"
|
|
| 42 | 64 |
} |
| 43 | 65 |
|
| 44 | 66 |
suggest () {
|
| 45 |
upnpc -s | sed -n " \ |
|
| 46 |
s/.*uptime=.*/uptime/p; \ |
|
| 47 |
s/.*MaxBitRate.*/bitrate/p; \ |
|
| 48 |
s/.*Bytes.*/traffic/p; \ |
|
| 49 |
s/.*Packets.*/pkts/p; \ |
|
| 50 |
" |
|
| 67 |
for mode in ${SUPPORTED_MODES}; do
|
|
| 68 |
echo "${mode}"
|
|
| 69 |
done |
|
| 51 | 70 |
} |
| 52 | 71 |
|
| 53 | 72 |
config () {
|
| 54 |
case $1 in
|
|
| 73 |
case ${1} in
|
|
| 55 | 74 |
"uptime") |
| 56 | 75 |
cat << EOF |
| 57 | 76 |
graph_title Uplink connection uptime |
| ... | ... | |
| 71 | 90 |
graph_category network |
| 72 | 91 |
graph_vlabel bitrate down (-) / up (+) |
| 73 | 92 |
down.label bps |
| 74 |
down.warning 4194304: |
|
| 75 |
down.critical 1048576: |
|
| 76 | 93 |
up.label bps |
| 77 |
up.warning 524288: |
|
| 78 |
up.critical 131072: |
|
| 79 | 94 |
down.graph no |
| 80 | 95 |
up.negative down |
| 81 | 96 |
EOF |
| ... | ... | |
| 114 | 129 |
up.negative down |
| 115 | 130 |
EOF |
| 116 | 131 |
;; |
| 117 |
"*")
|
|
| 118 |
echo "$0: unknown mode '$1'" >&2
|
|
| 132 |
*)
|
|
| 133 |
echo "unknown mode '${1}'" >&2
|
|
| 119 | 134 |
exit 1 |
| 135 |
;; |
|
| 120 | 136 |
esac |
| 121 | 137 |
} |
| 122 | 138 |
|
| 123 | 139 |
fetch () {
|
| 124 |
case $1 in
|
|
| 140 |
case "${1}" in
|
|
| 125 | 141 |
"uptime") |
| 126 |
upnpc -s | sed -n "s/.*uptime=\([0-9]\+\)s.*/uptime.value \1/p"
|
|
| 142 |
echo "${DATA}" | sed -n "s/.*uptime=\([0-9]\+\)s.*/uptime.value \1/p"
|
|
| 127 | 143 |
;; |
| 128 | 144 |
"bitrate") |
| 129 |
upnpc -s | sed -n "s/^MaxBitRateDown : \([0-9]\+\) bps.*MaxBitRateUp \([0-9]\+\) bps.*/down.value \1\nup.value \2/p"
|
|
| 145 |
echo "${DATA}" | sed -n "s/^MaxBitRateDown : \([0-9]\+\) bps.*MaxBitRateUp \([0-9]\+\) bps.*/down.value \1\nup.value \2/p"
|
|
| 130 | 146 |
;; |
| 131 | 147 |
"traffic") |
| 132 |
upnpc -s | sed -n "s/^Bytes:\s*Sent:\s*\([0-9]\+\).*Recv:\s*\([0-9]\+\).*/up.value \1\ndown.value \2/p"
|
|
| 148 |
echo ${DATA} | sed -n "s/^Bytes:\s*Sent:\s*\([0-9]\+\).*Recv:\s*\([0-9]\+\).*/up.value \1\ndown.value \2/p"
|
|
| 133 | 149 |
;; |
| 134 | 150 |
"pkts") |
| 135 |
upnpc -s | sed -n "s/^Packets:\s*Sent:\s*\([0-9]\+\).*Recv:\s*\([0-9]\+\).*/up.value \1\ndown.value \2/p"
|
|
| 151 |
echo "${DATA}" | sed -n "s/^Packets:\s*Sent:\s*\([0-9]\+\).*Recv:\s*\([0-9]\+\).*/up.value \1\ndown.value \2/p"
|
|
| 136 | 152 |
;; |
| 137 |
"*")
|
|
| 138 |
echo "$0: unknown mode '$1'" >&2
|
|
| 153 |
*)
|
|
| 154 |
echo "unknown mode '${1}'" >&2
|
|
| 139 | 155 |
exit 1 |
| 156 |
;; |
|
| 140 | 157 |
esac |
| 141 | 158 |
} |
| 142 | 159 |
|
| 143 |
mode=`echo $0 | sed 's/.*_//'` |
|
| 144 |
|
|
| 145 |
case $1 in |
|
| 160 |
case ${1:-} in
|
|
| 146 | 161 |
"autoconf") |
| 147 | 162 |
autoconf |
| 148 | 163 |
;; |
| ... | ... | |
| 150 | 165 |
suggest |
| 151 | 166 |
;; |
| 152 | 167 |
"config") |
| 153 |
config $mode
|
|
| 168 |
config "${MODE}"
|
|
| 154 | 169 |
;; |
| 155 | 170 |
*) |
| 156 |
fetch $mode
|
|
| 171 |
fetch "${MODE}"
|
|
| 157 | 172 |
;; |
| 158 | 173 |
esac |
Formats disponibles : Unified diff