First revision of nodewatcher an configurator. Removing Autoupdate and old stuff, changing language of logmessages to english

This commit is contained in:
floh1111 2012-01-11 21:03:10 +00:00
parent 65a91b45fc
commit bf6f0ed834
4 changed files with 78 additions and 173 deletions

View File

@ -11,9 +11,6 @@ config 'api'
option 'timeout' '5' option 'timeout' '5'
option 'retry' '5' option 'retry' '5'
config 'update'
option 'autoupdate' '1'
config 'crawl' config 'crawl'
option 'method' 'hash' option 'method' 'hash'
option 'nickname' '1' option 'nickname' '1'

View File

@ -2,16 +2,7 @@ config 'script'
option 'version' '25' option 'version' '25'
option 'error_level' '0' option 'error_level' '0'
option 'logfile' '/var/log/nodewatcher.log' option 'logfile' '/var/log/nodewatcher.log'
option 'data_file' '/tmp/node.data'
config 'api'
option 'ipv4_address' '1'
option 'ipv6_interface' 'br-mesh'
option 'ipv6_address' 'fe80::201:2ff:fe03:405'
option 'timeout' '5'
option 'retry' '5'
config 'update'
option 'autoupdate' '1'
config 'network' config 'network'
option 'mesh_interface' 'br-mesh' option 'mesh_interface' 'br-mesh'

View File

@ -1,9 +1,9 @@
#!/bin/sh #!/bin/sh
# Netmon Configurator (C) 2010-2011 Freifunk Oldenburg # Netmon Configurator (C) 2010-2012 Freifunk Oldenburg
# Lizenz: GPL # Lizenz: GPL v3
SCRIPT_DIR=`dirname $0`
#Get the configuration from the uci configuration file
#If it does not exists, then get it from a normal bash file with variables.
if [ -f /etc/config/configurator ];then if [ -f /etc/config/configurator ];then
API_IPV4_ADRESS=`uci get configurator.@api[0].ipv4_address` API_IPV4_ADRESS=`uci get configurator.@api[0].ipv4_address`
API_IPV6_ADRESS=`uci get configurator.@api[0].ipv6_address` API_IPV6_ADRESS=`uci get configurator.@api[0].ipv6_address`
@ -19,10 +19,9 @@ if [ -f /etc/config/configurator ];then
CRAWL_UPDATE_HASH=`uci get configurator.@crawl[0].update_hash` CRAWL_UPDATE_HASH=`uci get configurator.@crawl[0].update_hash`
CRAWL_NICKNAME=`uci get configurator.@crawl[0].nickname` CRAWL_NICKNAME=`uci get configurator.@crawl[0].nickname`
CRAWL_PASSWORD=`uci get configurator.@crawl[0].password` CRAWL_PASSWORD=`uci get configurator.@crawl[0].password`
UPDATE_AUTOUPDATE=`uci get configurator.@update[0].autoupdate`
AUTOADD_IPV6_ADDRESS=`uci get configurator.@netmon[0].autoadd_ipv6_address` AUTOADD_IPV6_ADDRESS=`uci get configurator.@netmon[0].autoadd_ipv6_address`
else else
. $SCRIPT_DIR/configurator_config . `dirname $0`/configurator_config
fi fi
API_RETRY=$(($API_RETRY - 1)) API_RETRY=$(($API_RETRY - 1))
@ -47,14 +46,14 @@ sync_hostname() {
if [ "$netmon_hostname" != "" ]; then if [ "$netmon_hostname" != "" ]; then
if [ "$netmon_hostname" != "`cat /proc/sys/kernel/hostname`" ]; then if [ "$netmon_hostname" != "`cat /proc/sys/kernel/hostname`" ]; then
if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then
echo "`date`: Setze neuen Hostname: $netmon_hostname" >> $SCRIPT_LOGFILE echo "`date`: Setting new hostname: $netmon_hostname" >> $SCRIPT_LOGFILE
fi fi
uci set system.@system[0].hostname=$netmon_hostname uci set system.@system[0].hostname=$netmon_hostname
uci commit uci commit
echo $netmon_hostname > /proc/sys/kernel/hostname echo $netmon_hostname > /proc/sys/kernel/hostname
else else
if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then
echo "`date`: Hostname ist aktuell" >> $SCRIPT_LOGFILE echo "`date`: Hostname is up to date" >> $SCRIPT_LOGFILE
fi fi
fi fi
fi fi
@ -71,13 +70,13 @@ assign_router() {
if [ `echo $ergebnis| cut '-d;' -f1` = "success" ]; then if [ `echo $ergebnis| cut '-d;' -f1` = "success" ]; then
router_auto_assign_login_string=`echo $ergebnis| cut '-d;' -f2` router_auto_assign_login_string=`echo $ergebnis| cut '-d;' -f2`
if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then
echo "`date`: Es existiert ein Router mit dem Login String $router_auto_assign_login_string" >> $SCRIPT_LOGFILE echo "`date`: There alredy exists a router with this login string: $router_auto_assign_login_string" >> $SCRIPT_LOGFILE
fi fi
elif [ `echo $ergebnis| cut '-d;' -f1` = "error" ]; then elif [ `echo $ergebnis| cut '-d;' -f1` = "error" ]; then
router_auto_assign_login_string=`echo $login_strings| cut '-d;' -f1` router_auto_assign_login_string=`echo $login_strings| cut '-d;' -f1`
if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then
echo "`date`: Es existiert kein Router mit einem der Login Strings: $login_strings" >> $SCRIPT_LOGFILE echo "`date`: A router with this login string does not exist: $login_strings" >> $SCRIPT_LOGFILE
echo "`date`: Nutze $router_auto_assign_login_string als login string" >> $SCRIPT_LOGFILE echo "`date`: Using $router_auto_assign_login_string as login string" >> $SCRIPT_LOGFILE
fi fi
fi fi
@ -87,27 +86,27 @@ assign_router() {
if [ `echo $ergebnis| cut '-d;' -f1` != "success" ]; then if [ `echo $ergebnis| cut '-d;' -f1` != "success" ]; then
if [ `echo $ergebnis| cut '-d;' -f2` = "already_assigned" ]; then if [ `echo $ergebnis| cut '-d;' -f2` = "already_assigned" ]; then
if [ $SCRIPT_ERROR_LEVEL -gt "0" ]; then if [ $SCRIPT_ERROR_LEVEL -gt "0" ]; then
echo "`date`: Der Login String `echo $ergebnis| cut '-d;' -f3` ist bereits mit einem Router verknüpft, beende" >> $SCRIPT_LOGFILE echo "`date`: The login string `echo $ergebnis| cut '-d;' -f3` is already assigned to a router. Exiting" >> $SCRIPT_LOGFILE
exit 0 exit 0
fi fi
elif [ `echo $ergebnis| cut '-d;' -f2` = "autoassign_not_allowed" ]; then elif [ `echo $ergebnis| cut '-d;' -f2` = "autoassign_not_allowed" ]; then
if [ $SCRIPT_ERROR_LEVEL -gt "0" ]; then if [ $SCRIPT_ERROR_LEVEL -gt "0" ]; then
echo "`date`: Der dem Login String `echo $ergebnis| cut '-d;' -f3` zugewiesene Router erlaubt autoassign nicht, beende" >> $SCRIPT_LOGFILE echo "`date`: The router with the login string `echo $ergebnis| cut '-d;' -f3` does not allow autoassign. Exiting" >> $SCRIPT_LOGFILE
exit 0 exit 0
fi fi
elif [ `echo $ergebnis| cut '-d;' -f2` = "new_not_assigned" ]; then elif [ `echo $ergebnis| cut '-d;' -f2` = "new_not_assigned" ]; then
if [ $SCRIPT_ERROR_LEVEL -gt "0" ]; then if [ $SCRIPT_ERROR_LEVEL -gt "0" ]; then
echo "`date`: Router wurde der Liste der nicht zugewiesenen Router hinzugefügt, beende" >> $SCRIPT_LOGFILE echo "`date`: Router has been added to the list of not assigned routers. Exiting" >> $SCRIPT_LOGFILE
exit 0 exit 0
fi fi
elif [ `echo $ergebnis| cut '-d;' -f2` = "updated_not_assigned" ]; then elif [ `echo $ergebnis| cut '-d;' -f2` = "updated_not_assigned" ]; then
if [ $SCRIPT_ERROR_LEVEL -gt "0" ]; then if [ $SCRIPT_ERROR_LEVEL -gt "0" ]; then
echo "`date`: Router auf der Liste der nicht zugewiesenen Router wurde geupdated, beende" >> $SCRIPT_LOGFILE echo "`date`: The list of not assigned routers has been updated. Exiting" >> $SCRIPT_LOGFILE
exit 0 exit 0
fi fi
fi fi
if [ $SCRIPT_ERROR_LEVEL -gt "0" ]; then if [ $SCRIPT_ERROR_LEVEL -gt "0" ]; then
echo "`date`: Der Router wurde nicht mit Netmon verknüpft" >> $SCRIPT_LOGFILE echo "`date`: The router has not been assigned to a router in Netmon" >> $SCRIPT_LOGFILE
fi fi
elif [ `echo $ergebnis| cut '-d;' -f1` = "success" ]; then elif [ `echo $ergebnis| cut '-d;' -f1` = "success" ]; then
#write new config #write new config
@ -118,7 +117,7 @@ assign_router() {
uci set nodewatcher.@crawl[0].router_id=`echo $ergebnis| cut '-d;' -f2` uci set nodewatcher.@crawl[0].router_id=`echo $ergebnis| cut '-d;' -f2`
if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then
echo "`date`: Der Router `echo $ergebnis| cut '-d;' -f2` wurde mit Netmon verknüpft" >> $SCRIPT_LOGFILE echo "`date`: The router `echo $ergebnis| cut '-d;' -f2` has been assigned with a router in Netmon" >> $SCRIPT_LOGFILE
fi fi
uci commit uci commit
@ -132,40 +131,40 @@ assign_router() {
autoadd_ipv6_address() { autoadd_ipv6_address() {
netmon_api=`get_url` netmon_api=`get_url`
echo "`date`: Führe IPv6 Address autoadd durch" >> $SCRIPT_LOGFILE echo "`date`: Doing IPv6 autoadd" >> $SCRIPT_LOGFILE
ipv6_link_local_addr="`ifconfig br-mesh | grep 'inet6 addr:' | grep 'Scope:Link' | awk '{ print $3}'`" ipv6_link_local_addr="`ifconfig br-mesh | grep 'inet6 addr:' | grep 'Scope:Link' | awk '{ print $3}'`"
command="wget -q -O - http://$netmon_api/api_csv_configurator.php?section=autoadd_ipv6_address&authentificationmethod=$CRAWL_METHOD&nickname=$CRAWL_NICKNAME&password=$CRAWL_PASSWORD&router_auto_update_hash=$CRAWL_UPDATE_HASH&router_id=$CRAWL_ROUTER_ID&ip=$ipv6_link_local_addr" command="wget -q -O - http://$netmon_api/api_csv_configurator.php?section=autoadd_ipv6_address&authentificationmethod=$CRAWL_METHOD&nickname=$CRAWL_NICKNAME&password=$CRAWL_PASSWORD&router_auto_update_hash=$CRAWL_UPDATE_HASH&router_id=$CRAWL_ROUTER_ID&ip=$ipv6_link_local_addr"
ergebnis=`$command&sleep $API_TIMEOUT; kill $!` ergebnis=`$command&sleep $API_TIMEOUT; kill $!`
if [ `echo $ergebnis| cut '-d,' -f1` = "success" ]; then if [ `echo $ergebnis| cut '-d,' -f1` = "success" ]; then
uci set configurator.@netmon[0].autoadd_ipv6_address='0' uci set configurator.@netmon[0].autoadd_ipv6_address='0'
uci commit uci commit
echo "`date`: Die IPv6-Adresse fÃr Router $CRAWL_ROUTER_ID wurde Netmon hinzugefügt" >> $SCRIPT_LOGFILE echo "`date`: The IPv6 address of the router $CRAWL_ROUTER_ID has been added to the router in Netmon" >> $SCRIPT_LOGFILE
echo "`date`: IPv6 Autoadd wurde abgestellt um zu starke Belastung der Netmon API zu vermeiden" >> $SCRIPT_LOGFILE echo "`date`: IPv6 Autoadd has been disabled cause it is no longer necesarry" >> $SCRIPT_LOGFILE
else else
echo "`date`: Die IPv6-Adresse existiert bereits in Netmon (auf Router-ID `echo $ergebnis| cut '-d,' -f3`)" >> $SCRIPT_LOGFILE echo "`date`: The IPv6 address already exists in Netmon on router `echo $ergebnis| cut '-d,' -f3`)" >> $SCRIPT_LOGFILE
fi fi
} }
if [ $CRAWL_METHOD == "login" ]; then if [ $CRAWL_METHOD == "login" ]; then
if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then
echo "`date`: Authentifizierungsmethode ist: Username und Passwort" >> $SCRIPT_LOGFILE echo "`date`: Authentification method is: username and passwort" >> $SCRIPT_LOGFILE
fi fi
elif [ $CRAWL_METHOD == "hash" ]; then elif [ $CRAWL_METHOD == "hash" ]; then
if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then
echo "`date`: Authentifizierungsmethode ist: Autoassign und Hash" >> $SCRIPT_LOGFILE echo "`date`: Authentification method: autoassign and hash" >> $SCRIPT_LOGFILE
echo "`date`: Prüfe ob Roter schon mit Netmon verknüpft ist" >> $SCRIPT_LOGFILE echo "`date`: Checking if the router is already assigned to a router in Netmon" >> $SCRIPT_LOGFILE
fi fi
if [ $CRAWL_UPDATE_HASH == "1" ]; then if [ $CRAWL_UPDATE_HASH == "1" ]; then
can_crawl=0 can_crawl=0
if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then
echo "`date`: Der Router ist noch NICHT mit Netmon verknüpft" >> $SCRIPT_LOGFILE echo "`date`: The router is not assigned to a router in Netmon" >> $SCRIPT_LOGFILE
echo "`date`: Versuche verknüpfung herzustellen" >> $SCRIPT_LOGFILE echo "`date`: Trying to assign the router" >> $SCRIPT_LOGFILE
fi fi
assign_router assign_router
sync_hostname sync_hostname
else else
if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then
echo "`date`: Der Router ist bereits mit Netmon verknüpt" >> $SCRIPT_LOGFILE echo "`date`: The router is alredy assigned to a router in Netmon" >> $SCRIPT_LOGFILE
fi fi
if [[ $AUTOADD_IPV6_ADDRESS = "1" ]]; then if [[ $AUTOADD_IPV6_ADDRESS = "1" ]]; then
autoadd_ipv6_address autoadd_ipv6_address

View File

@ -1,110 +1,39 @@
#!/bin/sh #!/bin/sh
# Netmon Nodewatcher (C) 2010-2011 Freifunk Oldenburg # Netmon Nodewatcher (C) 2010-2012 Freifunk Oldenburg
# Lizenz: GPL # License; GPL v3
SCRIPT_DIR=`dirname $0`
#Get the configuration from the uci configuration file
#If it does not exists, then get it from a normal bash file with variables.
if [ -f /etc/config/nodewatcher ];then if [ -f /etc/config/nodewatcher ];then
API_IPV4_ADRESS=`uci get nodewatcher.@api[0].ipv4_address`
API_IPV6_ADRESS=`uci get nodewatcher.@api[0].ipv6_address`
API_IPV6_INTERFACE=`uci get nodewatcher.@api[0].ipv6_interface`
API_TIMEOUT=`uci get nodewatcher.@api[0].timeout`
API_RETRY=`uci get nodewatcher.@api[0].retry`
SCRIPT_VERSION=`uci get nodewatcher.@script[0].version` SCRIPT_VERSION=`uci get nodewatcher.@script[0].version`
SCRIPT_ERROR_LEVEL=`uci get nodewatcher.@script[0].error_level` SCRIPT_ERROR_LEVEL=`uci get nodewatcher.@script[0].error_level`
SCRIPT_LOGFILE=`uci get nodewatcher.@script[0].logfile` SCRIPT_LOGFILE=`uci get nodewatcher.@script[0].logfile`
UPDATE_AUTOUPDATE=`uci get nodewatcher.@update[0].autoupdate` SCRIPT_DATA_FILE=`uci get nodewatcher.@script[0].data_file`
MESH_INTERFACE=`uci get nodewatcher.@network[0].mesh_interface` MESH_INTERFACE=`uci get nodewatcher.@network[0].mesh_interface`
CLIENT_INTERFACES=`uci get nodewatcher.@network[0].client_interfaces` CLIENT_INTERFACES=`uci get nodewatcher.@network[0].client_interfaces`
else else
. $SCRIPT_DIR/nodewatcher_config . `dirname $0`/nodewatcher_config
fi fi
API_RETRY=$(($API_RETRY - 1)) #this method checks id the logfile has bekome too big and deletes the first X lines
delete_log() { delete_log() {
if [ -f $logfile ]; then if [ -f $SCRIPT_LOGFILE ]; then
if [ `ls -la $logfile | awk '{ print $5 }'` -gt "6000" ]; then if [ `ls -la $SCRIPT_LOGFILE | awk '{ print $5 }'` -gt "6000" ]; then
sed -i '1,60d' $logfile sed -i '1,60d' $SCRIPT_LOGFILE
if [ $error_level -gt "1" ]; then if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then
echo "`date`: Logfile wurde verkleinert" >> $logfile echo "`date`: Logfile has been made smaller" >> $SCRIPT_LOGFILE
fi fi
fi fi
fi fi
} }
get_url() { #this method generates the crawl data xml file that is beeing fetched by netmon
if [[ $API_IPV4_ADRESS != "1" ]]; then #and provided by a small local httpd
url=$API_IPV4_ADRESS
else
url="[$API_IPV6_ADRESS"%"$API_IPV6_INTERFACE]"
fi
echo $url
}
get_curl() {
if [[ $API_IPV4_ADRESS != "1" ]]; then
curl="http://$API_IPV4_ADRESS"
else
numeric_scope_id=`ip addr | grep $API_IPV6_INTERFACE | awk '{ print $1 }' | sed 's/://'`
curl="-g http://$API_IPV6_ADRESS%$numeric_scope_id"
fi
echo $curl
}
do_ping() {
if [[ $API_IPV4_ADRESS != "1" ]]; then
command="ping -c 2 "$API_IPV4_ADRESS
else
command="ping -c 2 -I "$API_IPV6_INTERFACE" "$API_IPV6_ADRESS
fi
if [ $error_level -gt "1" ]; then
echo "`date`: Pinging..." >> $logfile
fi
ping_return=`$command`
if [ $error_level -gt "2" ]; then
echo $ping_return
fi
}
update() {
if [ $error_level -gt "1" ]; then
echo "`date`: Suche neue Version" >> $logfile
fi
netmon_api=`get_url`
command="wget -q -O - http://$netmon_api/api_nodewatcher.php?section=version&nodewatcher_version=$SCRIPT_VERSION"
ergebnis=`$command&sleep $API_TIMEOUT; kill $!`
return=`echo $ergebnis| cut '-d;' -f1`
version=`echo $ergebnis| cut '-d;' -f2`
if [[ "$return" = "success" ]]; then
if [[ $version -gt $SCRIPT_VERSION ]]; then
if [ $error_level -gt "1" ]; then
echo "`date`: Eine neue Version ist Verfügbar, script wird geupdated" >> $logfile
fi
wget -q -O $SCRIPT_DIR/nodewatcher.sh "http://$netmon_api/api_nodewatcher.php?section=update&nodewatcher_version=$SCRIPT_VERSION"
uci set nodewatcher.@script[0].version=$version
uci commit
else
if [ $error_level -gt "1" ]; then
echo "`date`: Das Script ist aktuell" >> $logfile
fi
fi
else
if [ $error_level -gt "0" ]; then
echo "`date`: Beim Update ist ein Fehler aufgetreten: $ergebnis" >> $logfile
fi
fi
}
crawl() { crawl() {
#Get system data from UCI #Get system data from UCI
if which uci >/dev/null; then if which uci >/dev/null; then
if [ $error_level -gt "1" ]; then if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then
echo "`date`: UCI is installed, trying to collect extra data UCI" >> $logfile echo "`date`: UCI is installed, trying to collect extra data from UCI" >> $SCRIPT_LOGFILE
fi fi
location="`uci get freifunk.contact.location`" location="`uci get freifunk.contact.location`"
latitude="`uci get system.@system[0].latitude`" latitude="`uci get system.@system[0].latitude`"
@ -119,14 +48,17 @@ crawl() {
#Get system data from LUA #Get system data from LUA
if which lua >/dev/null; then if which lua >/dev/null; then
if [ $error_level -gt "1" ]; then if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then
echo "`date`: LUA is installed, trying to collect extra data LUA" >> $logfile echo "`date`: LUA is installed, trying to collect extra data from LUA" >> $SCRIPT_LOGFILE
fi fi
luciname=`lua -l luci.version -e 'print(luci.version.luciname)'` luciname=`lua -l luci.version -e 'print(luci.version.luciname)'`
lucversion=`lua -l luci.version -e 'print(luci.version.luciversion)'` lucversion=`lua -l luci.version -e 'print(luci.version.luciversion)'`
fi fi
#Get system data from other locations #Get system data from other locations
if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then
echo "`date`: Collecting basic system status data" >> $SCRIPT_LOGFILE
fi
hostname="`cat /proc/sys/kernel/hostname`" hostname="`cat /proc/sys/kernel/hostname`"
uptime=`cat /proc/uptime | awk '{ print $1 }'` uptime=`cat /proc/uptime | awk '{ print $1 }'`
idletime=`cat /proc/uptime | awk '{ print $2 }'` idletime=`cat /proc/uptime | awk '{ print $2 }'`
@ -145,6 +77,9 @@ crawl() {
processes=`cat /proc/loadavg | awk '{ print $4 }'` processes=`cat /proc/loadavg | awk '{ print $4 }'`
loadavg=`cat /proc/loadavg | awk '{ print $1 }'` loadavg=`cat /proc/loadavg | awk '{ print $1 }'`
if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then
echo "`date`: Collecting version information" >> $SCRIPT_LOGFILE
fi
if which batctl >/dev/null; then if which batctl >/dev/null; then
batctl_adv_version=`batctl -v | awk '{ print $2 }'` batctl_adv_version=`batctl -v | awk '{ print $2 }'`
batman_adv_version=`batctl o|head -n1|awk '{ print $3 }'|sed 's/,//'` batman_adv_version=`batctl o|head -n1|awk '{ print $3 }'|sed 's/,//'`
@ -163,14 +98,15 @@ crawl() {
firmware_version_file="/etc/firmware_release" firmware_version_file="/etc/firmware_release"
if [ -f $firmware_version_file ]; then if [ -f $firmware_version_file ]; then
. $firmware_version_file . $firmware_version_file
firmware_version=$FIRMWARE_VERSION
fi fi
if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then
echo "`date`: Collecting information from network interfaces" >> $SCRIPT_LOGFILE
fi
#Get interfaces #Get interfaces
IFACES=`cat /proc/net/dev | awk -F: '!/\|/ { gsub(/[[:space:]]*/, "", $1); split($2, a, " "); printf("%s=%s=%s ", $1, a[1], a[9]) }'` IFACES=`cat /proc/net/dev | awk -F: '!/\|/ { gsub(/[[:space:]]*/, "", $1); split($2, a, " "); printf("%s=%s=%s ", $1, a[1], a[9]) }'`
int="" interface_data=""
#Loop interfaces #Loop interfaces
for entry in $IFACES; do for entry in $IFACES; do
iface=`echo $entry | cut -d '=' -f 1` iface=`echo $entry | cut -d '=' -f 1`
@ -195,7 +131,7 @@ crawl() {
traffic_rx="$rcv" traffic_rx="$rcv"
traffic_tx="$xmt" traffic_tx="$xmt"
int=$int"<$name><name>$name</name><mac_addr>$mac_addr</mac_addr><ipv4_addr>$ipv4_addr</ipv4_addr><ipv6_addr>$ipv6_addr</ipv6_addr><ipv6_link_local_addr>$ipv6_link_local_addr</ipv6_link_local_addr><traffic_rx>$traffic_rx</traffic_rx><traffic_tx>$traffic_tx</traffic_tx><mtu>$mtu</mtu>" interface_data=$interface_data"<$name><name>$name</name><mac_addr>$mac_addr</mac_addr><ipv4_addr>$ipv4_addr</ipv4_addr><ipv6_addr>$ipv6_addr</ipv6_addr><ipv6_link_local_addr>$ipv6_link_local_addr</ipv6_link_local_addr><traffic_rx>$traffic_rx</traffic_rx><traffic_tx>$traffic_tx</traffic_tx><mtu>$mtu</mtu>"
if [ "`iwconfig ${iface} 2>/dev/null | grep Frequency | awk '{ print $2 }' | cut -d ':' -f 2`" != "" ]; then if [ "`iwconfig ${iface} 2>/dev/null | grep Frequency | awk '{ print $2 }' | cut -d ':' -f 2`" != "" ]; then
wlan_mode="`iwconfig ${iface} 2>/dev/null | grep 'Mode' | awk '{ print $1 }' | cut -d ':' -f 2`" wlan_mode="`iwconfig ${iface} 2>/dev/null | grep 'Mode' | awk '{ print $1 }' | cut -d ':' -f 2`"
@ -209,13 +145,16 @@ crawl() {
wlan_essid="`iwconfig ${iface} 2>/dev/null | grep ESSID | awk '{ split($4, a, \"\\"\"); printf(\"%s\", a[2]); }'`" wlan_essid="`iwconfig ${iface} 2>/dev/null | grep ESSID | awk '{ split($4, a, \"\\"\"); printf(\"%s\", a[2]); }'`"
wlan_frequency="`iwconfig ${iface} 2>/dev/null | grep Frequency | awk '{ print $2 }' | cut -d ':' -f 2`" wlan_frequency="`iwconfig ${iface} 2>/dev/null | grep Frequency | awk '{ print $2 }' | cut -d ':' -f 2`"
wlan_tx_power="`iwconfig ${iface} 2>/dev/null | grep 'Tx-Power' | awk '{ print $4 }' | cut -d ':' -f 2`" wlan_tx_power="`iwconfig ${iface} 2>/dev/null | grep 'Tx-Power' | awk '{ print $4 }' | cut -d ':' -f 2`"
int=$int"<wlan_mode>$wlan_mode</wlan_mode><wlan_frequency>$wlan_frequency</wlan_frequency><wlan_essid>$wlan_essid</wlan_essid><wlan_bssid>$wlan_bssid</wlan_bssid><wlan_tx_power>$wlan_tx_power</wlan_tx_power>" interface_data=$interface_data"<wlan_mode>$wlan_mode</wlan_mode><wlan_frequency>$wlan_frequency</wlan_frequency><wlan_essid>$wlan_essid</wlan_essid><wlan_bssid>$wlan_bssid</wlan_bssid><wlan_tx_power>$wlan_tx_power</wlan_tx_power>"
fi fi
int=$int"</$name>" interface_data=$interface_data"</$name>"
fi fi
fi fi
done done
if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then
echo "`date`: Collecting information from batman advanced and it´s interfaces" >> $SCRIPT_LOGFILE
fi
#B.A.T.M.A.N. advanced #B.A.T.M.A.N. advanced
mv /etc/bat-hosts /etc/bat-hosts.tmp mv /etc/bat-hosts /etc/bat-hosts.tmp
if which batctl >/dev/null; then if which batctl >/dev/null; then
@ -262,6 +201,9 @@ crawl() {
fi fi
mv /etc/bat-hosts.tmp /etc/bat-hosts mv /etc/bat-hosts.tmp /etc/bat-hosts
if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then
echo "`date`: Collecting information about conected clients" >> $SCRIPT_LOGFILE
fi
#CLIENTS #CLIENTS
SEDDEV=`brctl showstp $MESH_INTERFACE | egrep '\([0-9]\)' | sed -e "s/(//;s/)//" | awk '{ print "s/^ "$2"/"$1"/;" }'` SEDDEV=`brctl showstp $MESH_INTERFACE | egrep '\([0-9]\)' | sed -e "s/(//;s/)//" | awk '{ print "s/^ "$2"/"$1"/;" }'`
@ -275,53 +217,29 @@ crawl() {
done done
client_count=$i client_count=$i
SYSTEM_DATA="<status>online</status><hostname>$hostname</hostname><description>$description</description><location>$location</location><latitude>$latitude</latitude><longitude>$longitude</longitude><luciname>$luciname</luciname><luciversion>$luciversion</luciversion><distname>$distname</distname><distversion>$distversion</distversion><chipset>$chipset</chipset><cpu>$cpu</cpu><memory_total>$memory_total</memory_total><memory_caching>$memory_caching</memory_caching><memory_buffering>$memory_buffering</memory_buffering><memory_free>$memory_free</memory_free><loadavg>$loadavg</loadavg><processes>$processes</processes><uptime>$uptime</uptime><idletime>$idletime</idletime><local_time>$local_time</local_time><community_essid>$community_essid</community_essid><community_nickname>$community_nickname</community_nickname><community_email>$community_email</community_email><community_prefix>$community_prefix</community_prefix><batman_advanced_version>$batman_adv_version</batman_advanced_version><kernel_version>$kernel_version</kernel_version><nodewatcher_version>$nodewatcher_version</nodewatcher_version><firmware_version>$firmware_version</firmware_version><firmware_revision>$FIRMWARE_REVISION</firmware_revision><openwrt_core_revision>$OPENWRT_CORE_REVISION</openwrt_core_revision><openwrt_feeds_packages_revision>$OPENWRT_FEEDS_PACKAGES_REVISION</openwrt_feeds_packages_revision>" if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then
INTERFACE_DATA="$int" echo "`date`: Putting all information into a XML-File and save it at "$SCRIPT_DATA_FILE >> $SCRIPT_LOGFILE
BATMAN_ADV_ORIGINATORS="$batman_adv_originators" fi
CLIENT_DATA="$client_count" SYSTEM_DATA="<status>online</status><hostname>$hostname</hostname><description>$description</description><location>$location</location><latitude>$latitude</latitude><longitude>$longitude</longitude><luciname>$luciname</luciname><luciversion>$luciversion</luciversion><distname>$distname</distname><distversion>$distversion</distversion><chipset>$chipset</chipset><cpu>$cpu</cpu><memory_total>$memory_total</memory_total><memory_caching>$memory_caching</memory_caching><memory_buffering>$memory_buffering</memory_buffering><memory_free>$memory_free</memory_free><loadavg>$loadavg</loadavg><processes>$processes</processes><uptime>$uptime</uptime><idletime>$idletime</idletime><local_time>$local_time</local_time><community_essid>$community_essid</community_essid><community_nickname>$community_nickname</community_nickname><community_email>$community_email</community_email><community_prefix>$community_prefix</community_prefix><batman_advanced_version>$batman_adv_version</batman_advanced_version><kernel_version>$kernel_version</kernel_version><nodewatcher_version>$nodewatcher_version</nodewatcher_version><firmware_version>$FIRMWARE_VERSION</firmware_version><firmware_revision>$FIRMWARE_REVISION</firmware_revision><openwrt_core_revision>$OPENWRT_CORE_REVISION</openwrt_core_revision><openwrt_feeds_packages_revision>$OPENWRT_FEEDS_PACKAGES_REVISION</openwrt_feeds_packages_revision>"
DATA="<?xml version='1.0' standalone='yes'?><data><system_data>$SYSTEM_DATA</system_data><interface_data>$INTERFACE_DATA</interface_data><batman_adv_interfaces>$BATMAN_ADV_INTERFACES</batman_adv_interfaces><batman_adv_originators>$BATMAN_ADV_ORIGINATORS</batman_adv_originators><client_count>$CLIENT_DATA</client_count></data>" DATA="<?xml version='1.0' standalone='yes'?><data><system_data>$SYSTEM_DATA</system_data><interface_data>$interface_data</interface_data><batman_adv_interfaces>$BATMAN_ADV_INTERFACES</batman_adv_interfaces><batman_adv_originators>$batman_adv_originators</batman_adv_originators><client_count>$client_count</client_count></data>"
#write data to hxml file that provides the data on httpd #write data to hxml file that provides the data on httpd
echo $DATA > /tmp/node.data echo $DATA > $SCRIPT_DATA_FILE
} }
LANG=C LANG=C
SCRIPT_DIR=`dirname $0` #Prüft ob das logfile zu groß geworden ist
error_level=$SCRIPT_ERROR_LEVEL if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then
logfile=$SCRIPT_LOGFILE echo "`date`: Check logfile" >> $SCRIPT_LOGFILE
if [[ $UPDATE_AUTOUPDATE == '1' ]]; then
if [ $error_level -gt "1" ]; then
echo "`date`: Autoupdate ist an" >> $logfile
fi
update
else
if [ $error_level -gt "1" ]; then
echo "`date`: Autoupdate ist aus" >> $logfile
fi
fi fi
delete_log
if [[ "$1" == "update" ]]; then #Erzeugt die statusdaten
if [ $error_level -gt "1" ]; then if [ $SCRIPT_ERROR_LEVEL -gt "1" ]; then
echo "`date`: Führe manuelles update aus" >> $logfile echo "`date`: Generate actual status data" >> $SCRIPT_LOGFILE
fi
update
exit 1
fi fi
crawl
can_crawl=1
if [ $can_crawl == 1 ]; then
if [ $error_level -gt "1" ]; then
echo "`date`: Prüfe Logfile" >> $logfile
fi
delete_log
if [ $error_level -gt "1" ]; then
echo "`date`: Sende aktuelle Statusdaten" >> $logfile
fi
crawl
fi
exit 0 exit 0