Projet

Général

Profil

Révision 81bf32a5

ID81bf32a5a53bea095cfc42e694891661d7752722
Parent f6c627bd
Enfant 5382722f

Ajouté par Olivier Mehani il y a environ 6 ans

[network/upnpc_] Cleanup shell code and centralise call to upnpc

Signed-off-by: Olivier Mehani <>

Voir les différences:

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