#!/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="" for f in /usr/lib/nodewatcher.d/*.sh; do tmp="$($f)" DATA="$DATA$tmp" done 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