Added sqlite3 processor
authorBrian Flowers <git-admn@bsflowers.net>
Tue, 20 Sep 2016 07:02:21 +0000 (03:02 -0400)
committerBrian Flowers <git-admn@bsflowers.net>
Tue, 20 Sep 2016 07:02:21 +0000 (03:02 -0400)
bdsm.d/file.processor
bdsm.d/sqlite3.processor [new file with mode: 0644]
bdsm.sh

index dbbccd8..7f47079 100644 (file)
@@ -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 (file)
index 0000000..53fb8e1
--- /dev/null
@@ -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 (executable)
--- 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[@]}`