From: Brian Flowers Date: Fri, 19 Mar 2021 00:18:02 +0000 (-0400) Subject: Adding syslog script X-Git-Url: http://git.slightlycyberpunk.com%2C%20git.slightlycyberpunk.com/git/?a=commitdiff_plain;h=d19059bde196bcfd451070e55d6ddb02cd4d8fd5;p=CNS.git Adding syslog script --- d19059bde196bcfd451070e55d6ddb02cd4d8fd5 diff --git a/syslog.sh b/syslog.sh new file mode 100644 index 0000000..64480b0 --- /dev/null +++ b/syslog.sh @@ -0,0 +1,104 @@ +#!/bin/bash +INFLUX_HOST="http://cns-master:8086" +HOSTNAME="`hostname`" +LOCATION="bedroom" +AUDIODEVICE=hw:1 + +echo "Started at: `date`" + +log_audio() +{ + if [ ! -z "`ps -ef | grep rec | grep -v grep`" ]; then + return + fi + now="`date +%s`" + end="`expr $now + 55`" + export AUDIODRIVER=alsa + export AUDIODEV=${AUDIODEVICE} + while [ "`date +%s`" -le "$end" ]; do + line="`rec -n stat trim 0 1 2>&1 | awk '{print $1"_"$2 $3}' | grep ":" | tail -15 | tr '\n' ',' | sed 's/,$//g' | tr ':' '='`" + curl --silent -i -XPOST ${INFLUX_HOST}/write?db=motion --data-binary "motion,hostname=${HOSTNAME},type=audio $line" >/dev/null + done + echo "AUDIO DONE" + date +%s +} + +log_bme() +{ +#set -x + bme="`/home/pi/monitoring/bme680 | awk \ + 'BEGIN { count=0; tmp=0; prs=0; hum=0; voc=0; } + /^[0-9]/ {count++; tmp+=$4; prs+=$7; hum+=$10; vocs+=$13} + END {print "temperature="(tmp/count)",pressure="(prs/count)",humidity="(hum/count)",vocs="(vocs/count)}' |\ + sed 's/temperature=0.00,//g'`" + + echo "bme: $bme" + curl --silent -i -XPOST ${INFLUX_HOST}/write?db=environment --data-binary "atmosphere,hostname=${HOSTNAME},sensor=bme680 $bme" 2>/dev/null +} + +log_scd() +{ + ppmco2="`cat /run/sensors/scd30/last | grep CO2 | cut -d' ' -f2`" + temp="`cat /run/sensors/scd30/last | grep degC | cut -d' ' -f2`" + hum="`cat /run/sensors/scd30/last | grep humidity | cut -d' ' -f2`" + + curl --silent -i -XPOST ${INFLUX_HOST}/write?db=environment --data-binary "atmosphere,hostname=${HOSTNAME},sensor=scd30 ppmco2=$ppmco2,temperature=$temp,humidity=$hum" 2>/dev/null +} + +log_df() +{ + df | sed 's/%//g' | awk '{if(a[1] == "") {for(i=1;i/dev/null + done +} + +log_vm() +{ + line="`vmstat | grep -v '-' | awk '{if(a[1] == "") {for(i=1;i/dev/null +} + +log_sess() +{ + who -uH | \ + sed 's/\([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\) /\1@/g' | \ + awk 'BEGIN{a[1]=""}{if(a[1]==""){for(i=1;i<=NF;i++){a[i]=$i}}else{for(i=1;i<=NF;i++){printf a[i] "=" $i ","}}print"\n"}' | \ + grep -v '^$' | sed 's/IDLE=[.]/IDLE=0:0/g' | \ + sed 's/COMMENT=(/COMMENT=/g' | sed 's/),$//g' | \ + sed 's/IDLE=old/IDLE=99:00/g' | sed 's/TIME=/LOGIN_TIME=/g' | \ + while read line; do + # Convert time field to seconds + time="`echo "$line" | tr '@' ' ' | cut -d',' -f3 | cut -d'=' -f2`" + seconds=`date -d "$time" +%s` + line="`echo "$line" | sed "s/TIME=[^,]*,/TIME=${seconds},/g"`" + + # Quote string fields + #line="`echo "$line" | sed 's/=\([^,]*\),/="\1",/g' | sed 's/="\([0-9.-]*\)",/=\1,/g'`" + + # Make EVERYTHING a tag so we can group on it... + line="`echo "$line" | sed 's/\(.*\)\(LOGIN_TIME=[^,]*\),\(.*\)/\1\3 \2/g'`" + + curl --silent -i -XPOST ${INFLUX_HOST}/write?db=sysmon --data-binary "users,hostname=${HOSTNAME},$line" >/dev/null + done +} + +log_pir() +{ + pir=`cat /sys/class/gpio/gpio12/value` + curl --silent -i -XPOST ${INFLUX_HOST}/write?db=security --data-binary "sensors,type=pir,location=${LOCATION},hostname=${HOSTNAME} value=$pir" +} + +start=`date +%s` +stop="`expr $start + 50`" +date +%s +log_audio & +while [ "`date +%s`" -lt "$stop" ]; do + log_scd + log_bme + log_df + log_vm + log_sess + log_pir + sleep 25 +done