From: Brian Flowers Date: Tue, 20 Sep 2016 07:02:21 +0000 (-0400) Subject: Added sqlite3 processor X-Git-Url: http://git.slightlycyberpunk.com%2C%20git.slightlycyberpunk.com/git/?a=commitdiff_plain;h=b95601968133f03a43a8f97160ad7cbc2fb834a0;p=bdsm.git Added sqlite3 processor --- diff --git a/bdsm.d/file.processor b/bdsm.d/file.processor index dbbccd8..7f47079 100644 --- a/bdsm.d/file.processor +++ b/bdsm.d/file.processor @@ -28,23 +28,20 @@ error() ############################################################################### 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 } diff --git a/bdsm.d/sqlite3.processor b/bdsm.d/sqlite3.processor new file mode 100644 index 0000000..53fb8e1 --- /dev/null +++ b/bdsm.d/sqlite3.processor @@ -0,0 +1,117 @@ +#!/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 diff --git a/bdsm.sh b/bdsm.sh index b029635..3239aaa 100755 --- a/bdsm.sh +++ b/bdsm.sh @@ -167,7 +167,7 @@ start() if [ ${#processors[@]} -eq 0 ]; then error "No processors available!" error "Please install a .processor script to /home/bdsm/bdsm.d" - else if [ ${#processors} -eq 1 ]; then + elif [ ${#processors} -eq 1 ]; then processor=${processors[0]} else processor=`selector "Select a processor" ${processors[@]}`