firmware/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher

72 lines
1.7 KiB
Bash
Executable File

#!/bin/sh
# Netmon Nodewatcher (C) 2010-2012 Freifunk Oldenburg
# License; GPL v3
test -f /tmp/started || exit
# Allow only one instance
lockfile="/var/lock/${0##*/}.lock"
if ! lock -n "$lockfile"; then
echo "Only one instance of $0 allowed."
exit 1
fi
trap "lock -u \"$lockfile\"" INT TERM EXIT
[ -s /etc/config/nodewatcher ] || exit 1
SCRIPT_ERROR_LEVEL=$(uci get nodewatcher.@script[0].error_level)
SCRIPT_LOGFILE=$(uci get nodewatcher.@script[0].logfile)
SCRIPT_DATA_FILE=$(uci get nodewatcher.@script[0].data_file)
if [ "$SCRIPT_ERROR_LEVEL" -gt "1" ]; then
debug() {
echo "$1" >> "$SCRIPT_LOGFILE"
}
else
debug() {
:
}
fi
#This method checks if the log file has become too big and deletes the first X lines
delete_log() {
if [ -f "$SCRIPT_LOGFILE" ]; then
if [ "$(find "$SCRIPT_LOGFILE" -printf "%s")" -gt "6000" ]; then
sed -i '1,60d' "$SCRIPT_LOGFILE"
debug "$(date): Logfile has been made smaller"
fi
fi
}
#This method generates the crawl data XML file that is being fetched by netmon
#and provided by a small local httpd
crawl() {
debug "$(date): Putting all information into a XML-File and save it at $SCRIPT_DATA_FILE"
DATA="<?xml version='1.0' standalone='yes'?><data>"
for f in /usr/lib/nodewatcher.d/*.sh; do
tmp="$($f)"
DATA="$DATA$tmp"
done
DATA="$DATA</data>"
#write data to xml file that provides the data on httpd
SCRIPT_DATA_DIR=$(dirname "$SCRIPT_DATA_FILE")
test -d "$SCRIPT_DATA_DIR" || mkdir -p "$SCRIPT_DATA_DIR"
echo "$DATA" | gzip | tee "$SCRIPT_DATA_FILE" | alfred -s 64
}
LANG=C
#Prüft ob das logfile zu groß geworden ist
debug "$(date): Check logfile"
delete_log
#Erzeugt die statusdaten
debug "$(date): Generate actual status data"
crawl
exit 0