while [ 1 ]; do
df=`df --output=pcent "$DRIVE" | tail -1 | sed 's/[^0-9]//g'`
ts=`date '+%s'`
- stdbuf -o0 echo "\$ts|$HOSTNAME|DISK-$LABEL-USED|\$df"
+ stdbuf -oL echo "\$ts|$HOSTNAME|DISK-$LABEL-USED|\$df"
sleep $DELAY
done >> $OUTPATH &
echo \$! >/home/bdsm/.df.pid
stop()
{
- ssh $HOSTNAME "kill `cat /home/bdsm/.df.pid`"
+ ssh $HOSTNAME 'kill `cat /home/bdsm/.df.pid`'
ssh $HOSTNAME "rm /home/bdsm/.df.pid"
}
compatible="`ssh -q -n $HOSTNAME 'df --output=pcent /' 2>&1 1>/dev/null`"
if [ "$compatible" != "" ]; then
echo 0
- return
+ else
+ echo 1
fi
- echo 1
- return
}
# UTILITY FUNCTIONS
--- /dev/null
+#!/bin/bash
+################################################################################
+#
+# file.logger
+# Bash Daemon for System Monitoring
+# Logging to a text file
+#
+###############################################################################
+
+# TRAP UNKNOWN ERRORS
+###############################################################################
+trap failure SIGTERM SIGINT SIGFPE
+
+failure()
+{
+ error "Something has gone SERIOUSLY wrong! (Received signal $?)"
+ return 255
+}
+
+error()
+{
+ printf "\e[41m" 1>&2
+ printf "ERROR: $1" 1>&2
+ printf "\e[0m\n" 1>&2
+}
+
+# VARIABLES
+###############################################################################
+SCRIPT=$0
+HOSTNAME=$2
+FILE=$3
+
+# MAIN FUNCTIONS
+###############################################################################
+help()
+{
+ echo "Logging to a flat file"
+ echo "USAGE: $0 [FUNCTION] [HOSTNAME] [FILENAME]"
+ echo "FUNCTION -- start/stop/status/help"
+ echo "HOSTNAME -- the hostname to log on"
+ echo "::FILENAME -- the file to write logs to"
+ exit 0
+}
+
+start()
+{
+ ssh -qn $HOSTNAME "cat /home/bdsm/in.fifo >> $FILE; echo $! > /home/bdsm/.file-logger.pid &"
+}
+
+stop()
+{
+ ssh -qn $HOSTNAME 'kill `cat /home/bdsm/.file-logger.pid`; rm /home/bdsm/.file-logger.pid'
+}
+
+status()
+{
+ running=`ssh $HOSTNAME "cat /home/bdsm/.file-logger.pid 2>/dev/null | \
+ xargs ps -T | \
+ grep -v PID | \
+ wc -l"`
+
+ if [ -z "$running" ]; then
+ running=0
+ fi
+ if [ $running -eq 0 ]; then
+ echo "OFF"
+ else
+ echo "ON"
+ fi
+}
+
+compatible()
+{
+ compatible="`ssh -q -n $HOSTNAME 'ls /home/bdsm/in.fifo' 2>&1 1>/dev/null`"
+ if [ "$compatible" != "" ]; then
+ echo 0
+ else
+ echo 1
+ fi
+}
+
+# UTILITY FUNCTIONS
+###############################################################################
+
+formatConfig()
+{
+ # Reformat config file to be more machine-readable
+ # Removes whitespace and adds semicolons after property values
+ cat /home/bdsm/bdsm.conf | tr '\n' ' ' | sed 's/}/}\
+ /g' | sed 's/^;*//g' | sed "s/[[:space:]]//g"| \
+ sed 's/;\([{}]\)/\1/g' | sed 's/\([{}]\);/\1/g' \
+ > /home/bdsm/.bdsm.conf.tmp
+}
+
+# SCRIPT START
+###############################################################################
+if [ ! -f /home/bdsm/.bdsm.conf.tmp ]; then
+ formatConfig
+fi
+
+# Get a list of configured hosts
+hosts=($(cat /home/bdsm/.bdsm.conf.tmp | cut -d'{' -f1))
+
+if [ -z $1 ]; then
+ help
+elif [ $1 == "start" ]; then
+ start
+elif [ $1 == "stop" ]; then
+ stop
+elif [ $1 == "status" ]; then
+ status
+elif [ $1 == "compatible" ]; then
+ compatible
+elif [ $1 == "help" ]; then
+ help
+fi