WIP/RFC: Add package s2nproxy #194
32
src/packages/fff/fff-s2nproxy/Makefile
Normal file
32
src/packages/fff/fff-s2nproxy/Makefile
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
PKG_NAME:=fff-s2nproxy
|
||||||
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
|
PKG_BUILD_DIR:=$(BUILD_DIR)/fff-mqtt
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define Package/fff-s2nproxy
|
||||||
|
SECTION:=base
|
||||||
|
CATEGORY:=Freifunk
|
||||||
|
TITLE:=Freifunk-Franken snmp 2 nodewatcher proxy
|
||||||
|
URL:=https://www.freifunk-franken.de
|
||||||
|
DEPENDS:= \
|
||||||
|
+fff-nodewatcher \
|
||||||
|
+snmp-utils
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/fff-s2nproxy/description
|
||||||
|
This package can be used to monitor snmp devices
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/Compile
|
||||||
|
# nothing
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/fff-s2nproxy/install
|
||||||
|
$(CP) ./files/* $(1)/
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,fff-s2nproxy))
|
1
src/packages/fff/fff-s2nproxy/files/etc/config/s2nproxy
Normal file
1
src/packages/fff/fff-s2nproxy/files/etc/config/s2nproxy
Normal file
|
@ -0,0 +1 @@
|
||||||
|
|
|
@ -0,0 +1,200 @@
|
||||||
|
#!/bin/sh
|
||||||
|
. /lib/functions.sh
|
||||||
|
|
||||||
|
# Example for /etc/config/s2nproxy
|
||||||
|
#
|
||||||
|
# config s2nproxy 'DEVICE_NAME'
|
||||||
|
# option ip 'IP_ADDRESS'
|
||||||
|
# option device 'DEVICE_TYPE'
|
||||||
|
# option community 'COMMUNITY'
|
||||||
|
|
||||||
|
# SNMP Walk
|
||||||
|
walk() {
|
||||||
|
community=$1
|
||||||
|
ip=$2
|
||||||
|
oid=$3
|
||||||
|
echo $(snmpwalk -O vQ -P e -L n -v 1 -c $community $ip $oid)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Format the dirty mikrotik mac address result
|
||||||
|
format_mac() {
|
||||||
|
echo $(echo $1 | xargs | sed 's/^[[:blank:]]*//;s/[[:blank:]]*$//' | sed 's/\ /\:/g')
|
||||||
|
}
|
||||||
|
|
||||||
|
# Reset variables to empty
|
||||||
|
reset_variables() {
|
||||||
|
signal=""
|
||||||
|
capacity=""
|
||||||
|
latency=""
|
||||||
|
name=""
|
||||||
|
fw=""
|
||||||
|
hw=""
|
||||||
|
frequency=""
|
||||||
|
frequency2=""
|
||||||
|
mac=""
|
||||||
|
clients=""
|
||||||
|
remotemac=""
|
||||||
|
}
|
||||||
|
|
||||||
|
printf "<s2nproxy>"
|
||||||
|
|
||||||
|
s2np() {
|
||||||
|
if [ -z "$(uci -q get s2nproxy.$1.community)" ]; then
|
||||||
|
community="public"
|
||||||
|
else
|
||||||
|
community=$(uci get s2nproxy.$1.community)
|
||||||
|
fi
|
||||||
|
|
||||||
|
ip=$(uci get s2nproxy.$1.ip)
|
||||||
|
|
||||||
|
# Check if host is available
|
||||||
|
if ping -c 1 -W 1 $ip &> /dev/null ; then
|
||||||
|
|
||||||
|
# Switch throught device types
|
||||||
|
case "$(uci -q get s2nproxy.$1.device)" in
|
||||||
|
airmaxac)
|
||||||
|
# Ubiquity AirMAX Richtfunk
|
||||||
|
reset_variables
|
||||||
|
name=$(walk $community $ip "iso.3.6.1.2.1.1.5.0" | xargs)
|
||||||
|
mac=$(format_mac "$(walk $community $ip 1.3.6.1.2.1.2.2.1.6.8)")
|
||||||
|
hw=$(walk $community $ip "iso.3.6.1.4.1.41112.1.4.1.1.9.1" | xargs)
|
||||||
|
signal=$(walk $community $ip "iso.3.6.1.4.1.41112.1.4.5.1.5")
|
||||||
|
capacity=$(walk $community $ip "iso.3.6.1.4.1.41112.1.4.5.1.10" / 1024)
|
||||||
|
capacity=$(printf %.2f "$((10**9 * $capacity / 1048576))e-9")
|
||||||
|
remotemac=$(format_mac "$(walk $community $ip iso.3.6.1.4.1.41112.1.4.5.1.4.1)")
|
||||||
|
echo "<interface>"
|
||||||
|
for OUTPUT in $(walk $community $ip 1.3.6.1.2.1.2.2.1.1)
|
||||||
|
do
|
||||||
|
portname=$(echo $(walk $community $ip iso.3.6.1.2.1.2.2.1.2.$OUTPUT) | sed 's/"//g')
|
||||||
|
traffic_rx=$(walk $community $ip 1.3.6.1.2.1.2.2.1.10.$OUTPUT)
|
||||||
|
traffic_tx=$(walk $community $ip 1.3.6.1.2.1.2.2.1.16.$OUTPUT)
|
||||||
|
printf "<$portname><traffic_rx>$traffic_rx</traffic_rx><traffic_tx>$traffic_tx</traffic_tx><port>$portname</port></$portname>"
|
||||||
|
done
|
||||||
|
echo "</interface>"
|
||||||
|
latency=$(ping -qc1 $ip 2>&1 | awk -F'/' 'END{ print (/^round-trip/? $4:"0") }')
|
||||||
|
printf "<$1><name>$name</name><ip>$ip</ip><mac>$mac</mac><hw>$hw</hw><signal>$signal</signal><capacity>$capacity</capacity><latency>$latency</latency><remotemac>$remotemac</remotemac></$1>"
|
||||||
|
;;
|
||||||
|
|
||||||
|
mikrotikap)
|
||||||
|
# Mikrotik AP
|
||||||
|
reset_variables
|
||||||
|
name=$(walk $community $ip 1.3.6.1.2.1.1.5 | xargs)
|
||||||
|
fw=$(walk $community $ip 1.3.6.1.4.1.14988.1.1.7.7 | xargs)
|
||||||
|
hw=$(walk $community $ip 1.3.6.1.4.1.14988.1.1.7.9 | xargs)
|
||||||
|
frequency=$(walk $community $ip 1.3.6.1.4.1.14988.1.1.1.3.1.7.1 | xargs)
|
||||||
|
frequency2=$(walk $community $ip 1.3.6.1.4.1.14988.1.1.1.3.1.7.2 | xargs)
|
||||||
|
mac=$(format_mac "$(walk $community $ip 1.3.6.1.2.1.2.2.1.6.1)")
|
||||||
|
clients=$(( $(walk $community $ip 1.3.6.1.4.1.14988.1.1.1.3.1.6.1) + $(walk $community $ip 1.3.6.1.4.1.14988.1.1.1.3.1.6.2) ))
|
||||||
|
latency=$(ping -qc1 $ip 2>&1 | awk -F'/' 'END{ print (/^round-trip/? $4:"0") }')
|
||||||
|
printf "<$1><name>$name</name><ip>$ip</ip><mac>$mac</mac><fw>$fw</fw><hw>$hw</hw><frequency>$frequency</frequency><frequency2>$frequency2</frequency2><clients>$clients</clients></$1>"
|
||||||
|
;;
|
||||||
|
|
||||||
|
mikrotikw60grfap)
|
||||||
|
# Mikrotik 60GHz Richtfunk AP
|
||||||
|
reset_variables
|
||||||
|
name=$(walk $community $ip 1.3.6.1.2.1.1.5 | xargs)
|
||||||
|
fw=$(walk $community $ip 1.3.6.1.4.1.14988.1.1.7.7 | xargs)
|
||||||
|
hw=$(walk $community $ip 1.3.6.1.4.1.14988.1.1.7.9 | xargs)
|
||||||
|
signal=$(walk $community $ip 1.3.6.1.4.1.14988.1.1.1.8.1.8.1)
|
||||||
|
capacity=$(walk $community $ip 1.3.6.1.4.1.14988.1.1.1.8.1.13.1)
|
||||||
|
frequency=$(walk $community $ip 1.3.6.1.4.1.14988.1.1.1.8.1.6.1)
|
||||||
|
mac=$(format_mac "$(walk $community $ip 1.3.6.1.2.1.2.2.1.6.1)")
|
||||||
|
remotemac=$(format_mac "$(walk $community $ip 1.3.6.1.4.1.14988.1.1.1.8.1.5.1)")
|
||||||
|
latency=$(ping -qc1 $ip 2>&1 | awk -F'/' 'END{ print (/^round-trip/? $4:"0") }')
|
||||||
|
printf "<$1><name>$name</name><ip>$ip</ip><mac>$mac</mac><fw>$fw</fw><hw>$hw</hw><signal>$signal</signal><capacity>$capacity</capacity><latency>$latency</latency><frequency>$frequency</frequency><remotemac>$remotemac</remotemac></$1>"
|
||||||
|
;;
|
||||||
|
|
||||||
|
mikrotikw60grfsta)
|
||||||
|
# Mikrotik 60GHz Richtfunk Station
|
||||||
|
reset_variables
|
||||||
|
name=$(walk $community $ip 1.3.6.1.2.1.1.5 | xargs)
|
||||||
|
fw=$(walk $community $ip 1.3.6.1.4.1.14988.1.1.7.7 | xargs)
|
||||||
|
hw=$(walk $community $ip 1.3.6.1.4.1.14988.1.1.7.9 | xargs)
|
||||||
|
signal=$(walk $community $ip 1.3.6.1.4.1.14988.1.1.1.8.1.12.1)
|
||||||
|
capacity=$(walk $community $ip 1.3.6.1.4.1.14988.1.1.1.8.1.13.1)
|
||||||
|
frequency=$(walk $community $ip 1.3.6.1.4.1.14988.1.1.1.8.1.6.1)
|
||||||
|
mac=$(format_mac "$(walk $community $ip 1.3.6.1.2.1.2.2.1.6.1)")
|
||||||
|
remotemac=$(format_mac "$(walk $community $ip 1.3.6.1.4.1.14988.1.1.1.8.1.5.1)")
|
||||||
|
echo "<interface>"
|
||||||
|
for OUTPUT in $(walk $community $ip 1.3.6.1.2.1.2.2.1.1)
|
||||||
|
do
|
||||||
|
portname=$(echo $(walk $community $ip iso.3.6.1.2.1.2.2.1.2.$OUTPUT) | sed 's/"//g')
|
||||||
|
traffic_rx=$(walk $community $ip 1.3.6.1.2.1.2.2.1.10.$OUTPUT)
|
||||||
|
traffic_tx=$(walk $community $ip 1.3.6.1.2.1.2.2.1.16.$OUTPUT)
|
||||||
|
printf "<$portname><traffic_rx>$traffic_rx</traffic_rx><traffic_tx>$traffic_tx</traffic_tx><port>$portname</port></$portname>"
|
||||||
|
done
|
||||||
|
echo "</interface>"
|
||||||
|
latency=$(ping -qc1 $ip 2>&1 | awk -F'/' 'END{ print (/^round-trip/? $4:"0") }')
|
||||||
|
printf "<$1><name>$name</name><ip>$ip</ip><mac>$mac</mac><fw>$fw</fw><hw>$hw</hw><signal>$signal</signal><capacity>$capacity</capacity><latency>$latency</latency><frequency>$frequency</frequency><remotemac>$remotemac</remotemac></$1>"
|
||||||
|
;;
|
||||||
|
|
||||||
|
mikrotikw60gst)
|
||||||
|
# Mikrotik 60GHz Sektor
|
||||||
|
reset_variables
|
||||||
|
name=$(walk $community $ip 1.3.6.1.2.1.1.5 | xargs)
|
||||||
|
fw=$(walk $community $ip 1.3.6.1.4.1.14988.1.1.7.7 | xargs)
|
||||||
|
hw=$(walk $community $ip 1.3.6.1.4.1.14988.1.1.7.9 | xargs)
|
||||||
|
frequency=$(walk $community $ip 1.3.6.1.4.1.14988.1.1.1.8.1.6.1)
|
||||||
|
mac=$(format_mac "$(walk $community $ip 1.3.6.1.2.1.2.2.1.6.1)")
|
||||||
|
latency=$(ping -qc1 $ip 2>&1 | awk -F'/' 'END{ print (/^round-trip/? $4:"0") }')
|
||||||
|
printf "<$1><name>$name</name><ip>$ip</ip><mac>$mac</mac><fw>$fw</fw><hw>$hw</hw><latency>$latency</latency><frequency>$frequency</frequency></$1>"
|
||||||
|
;;
|
||||||
|
|
||||||
|
latenz)
|
||||||
|
reset_variables
|
||||||
|
latency=$(ping -qc1 $ip 2>&1 | awk -F'/' 'END{ print (/^round-trip/? $4:"0") }')
|
||||||
|
printf "<$1><ip>$ip</ip><latency>$latency</latency></$1>"
|
||||||
|
;;
|
||||||
|
|
||||||
|
ciscoap)
|
||||||
|
# Cisco AP
|
||||||
|
reset_variables
|
||||||
|
name=$(walk $community $ip 1.3.6.1.2.1.1.5 | xargs)
|
||||||
|
# fw=$(walk $community $ip 1.3.6.1.4.1.14988.1.1.7.7 | xargs)
|
||||||
|
# hw=$(walk $community $ip 1.3.6.1.2.1.47.1.1.1.1.13.1 | xargs)
|
||||||
|
# frequency=$(walk $community $ip 1.3.6.1.4.1.9.9.607.1.1.2.1.6.1 | xargs) #channel
|
||||||
|
# frequency2=$(walk $community $ip 1.3.6.1.4.1.9.9.607.1.1.2.1.6.2 | xargs) #channel
|
||||||
|
# mac=$(format_mac "$(walk $community $ip 1.3.6.1.2.1.2.2.1.6.1)")
|
||||||
|
clients=$(( $(walk $community $ip 1.3.6.1.4.1.9.9.273.1.1.2.1.1.1) + $(walk $community $ip 1.3.6.1.4.1.9.9.273.1.1.2.1.1.2) ))
|
||||||
|
echo "<interface>"
|
||||||
|
for OUTPUT in $(walk $community $ip 1.3.6.1.2.1.2.2.1.1)
|
||||||
|
do
|
||||||
|
portname=$(echo $(walk $community $ip iso.3.6.1.2.1.2.2.1.2.$OUTPUT) | sed 's/"//g')
|
||||||
|
traffic_rx=$(walk $community $ip 1.3.6.1.2.1.2.2.1.10.$OUTPUT)
|
||||||
|
traffic_tx=$(walk $community $ip 1.3.6.1.2.1.2.2.1.16.$OUTPUT)
|
||||||
|
printf "<$portname><traffic_rx>$traffic_rx</traffic_rx><traffic_tx>$traffic_tx</traffic_tx><port>$portname</port></$portname>"
|
||||||
|
done
|
||||||
|
echo "</interface>"
|
||||||
|
latency=$(ping -qc1 $ip 2>&1 | awk -F'/' 'END{ print (/^round-trip/? $4:"0") }')
|
||||||
|
printf "<$1><name>$name</name><ip>$ip</ip><clients>$clients</clients><latency>$latency</latency></$1>"
|
||||||
|
;;
|
||||||
|
|
||||||
|
switch)
|
||||||
|
# könnte für alle Switche gelten, getestet mit Netgear GS310TP
|
||||||
|
reset_variables
|
||||||
|
name=$(walk $community $ip 1.3.6.1.2.1.1.5.0 | xargs)
|
||||||
|
printf "<$1><name>$name</name>"
|
||||||
|
# fw=$(walk $community $ip 1.3.6.1.4.1.14988.1.1.7.7 | xargs)
|
||||||
|
# hw=$(walk $community $ip 1.3.6.1.4.1.14988.1.1.7.9 | xargs)
|
||||||
|
echo "<interface>"
|
||||||
|
for OUTPUT in $(walk $community $ip 1.3.6.1.2.1.2.2.1.1)
|
||||||
|
do
|
||||||
|
portname=$(echo $(walk $community $ip iso.3.6.1.2.1.2.2.1.2.$OUTPUT) | sed 's/"//g')
|
||||||
|
traffic_rx=$(walk $community $ip 1.3.6.1.2.1.2.2.1.10.$OUTPUT)
|
||||||
|
traffic_tx=$(walk $community $ip 1.3.6.1.2.1.2.2.1.16.$OUTPUT)
|
||||||
|
printf "<$portname><traffic_rx>$traffic_rx</traffic_rx><traffic_tx>$traffic_tx</traffic_tx><port>$portname</port></$portname>"
|
||||||
|
done
|
||||||
|
echo "</interface>"
|
||||||
|
latency=$(ping -qc1 $ip 2>&1 | awk -F'/' 'END{ print (/^round-trip/? $4:"0") }')
|
||||||
|
printf "<latency>$latency</latency></$1>"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
config_load s2nproxy
|
||||||
|
config_foreach s2np s2nproxy
|
||||||
|
|
||||||
|
printf "</s2nproxy>"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user