###############################################################################
SCRIPT=$0
HOSTNAME=$2
-FILE=$3
# MAIN FUNCTIONS
###############################################################################
help()
{
echo "Logging to a flat file"
- echo "USAGE: $0 [FUNCTION] [HOSTNAME] [FILENAME]"
+ echo "USAGE: $0 [FUNCTION]"
echo "FUNCTION -- start/stop/status/help"
- echo "HOSTNAME -- the hostname to log on"
- echo "::FILENAME -- the file to write logs to"
exit 0
}
start()
{
- cat /home/bdsm/in.fifo >> $FILE
+ cat /home/bdsm/in.fifo >> /home/bdsm/bdsm.log
echo $! > /home/bdsm/.processor.pid
}
--- /dev/null
+#!/bin/bash
+################################################################################
+#
+# sqlite3.processor
+# Bash Daemon for System Monitoring
+# Logging to an sqlite3 database 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
+
+# MAIN FUNCTIONS
+###############################################################################
+help()
+{
+ echo "Logging to an sqlite3 database file"
+ echo "USAGE: $0 [FUNCTION]"
+ echo "FUNCTION -- start/stop/status/help"
+ exit 0
+}
+
+start()
+{
+ sqlite3 /home/bdsm/bdsm.sqlite3 "SELECT 1 FROM MEASUREMENTS"
+ if [ $? -eq 1 ]; then
+ sqlite3 /home/bdsm/bdsm.sqlite3 \
+ "CREATE TABLE MEASUREMENTS(\
+ id integer primary key,
+ timestamp integer,
+ host varchar(128),
+ attribute varchar(128),
+ value varchar(128))"
+ fi
+
+ cat /home/bdsm/in.fifo | awk -F'|' '{ \
+ printf("INSERT INTO MEASUREMENTS(timestamp,host,attribute,value) \
+ VALUES (%s,\"%s\", \"%s\", \"%s\");\n",$1,$2, $3, $4) }' | \
+ sqlite3 bdsm.sqlite3
+ echo $! > /home/bdsm/.processor.pid
+}
+
+stop()
+{
+ kill `cat /home/bdsm/.processor.pid`
+ rm /home/bdsm/.file-logger.pid
+}
+
+status()
+{
+ running=`cat /home/bdsm/.processor.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
+}
+
+# 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 == "help" ]; then
+ help
+fi