makehtml bash script
#!/bin/bash # # present last 15 entries # & four hour update version # don't delete coffee.txt and tomup at end # rev.: 8/17/2018 # # Organize the data created by raspian/docker-hassio's # notify into an html page for the VPS # requires hasser's pub key be in # mover's directory on the VPS # # cut header from recording file, and # trim to one entry per hour in coffee.txt fix_c() { # cut the first two lines if there's coffee.txt if [ -e coffee.txt ] ; then tail +3 coffee.txt > coffee.txt2 # sort unique on date/hour (before first :) sort -t ':' -k 1,1 -u coffee.txt2 -o coffee.txt2 else # if there's no coffee create empty file touch coffee.txt2 fi fix_m } # repeat for tomup.txt fix_m() { if [ -e tomup.txt ] ; then tail +3 tomup.txt > tomup.txt2 sort -t ':' -k 1,1 -u tomup.txt2 -o tomup.txt2 else touch tomup.txt2 fi combine_sort } # # if not empty add coffee to tomup and put in time order combine_sort() { # if coffee isn't empty add it to tomup.txt if [ -s coffee.txt2 ] ; then cat coffee.txt2 >> tomup.txt2 fi # sort in-place sort tomup.txt2 -o tomup.txt2 trim_15 } # # trim tomup.txt2 to last 15 entries trim_15() { tail -n 15 tomup.txt2 > tomup.txt2.tmp mv -f tomup.txt2.tmp tomup.txt2 trim_datestamp } # loop tomup.txt2 stripping date & time # and add text trim_datestamp() { # only if tom2.txt isn't empty if [ -s tomup.txt2 ] ; then # step through tomup.txt2 while read dt ; do # copy line to variable s1=$(echo $dt) # if it's an M work it if [[ $dt = *"M" ]]; then # strip the seconds and M s2=$(echo $dt | sed 's/\..*M//g') # convert the date to Pacific and format dt2=$(date +%a\ %b\ %d\ %I:%M\ %p --date='TZ="UTC" '$s2'') # append it to tdate.txt echo "$dt2 Tom is moving" >> tdate.txt # if it's a C else if [[ $dt = *"C" ]]; then s2=$(echo $dt | sed 's/\..*C//g') dt2=$(date +%a\ %b\ %d\ %I:%M\ %p --date='TZ="UTC" '$s2'') echo "$dt2 Coffee is cooking" >> tdate.txt fi fi done <tomup.txt2 fi trim_dates } # trim time for desired display trim_dates() { # if tdate.txt exists, work it if [ -e tdate.txt ] ; then # add spaces to fourth then third space position sed -i 's/ /\ \ /5' tdate.txt # replace 0s with space for alignment sed -i 's/ 0/ \ /g' tdate.txt else # otherwise create it with some text echo "Nothing to report" > tdate.txt fi build_html } # build web page build_html() { # add some html for paragraphs sed -i ':a;N;$!ba;s/\n/\n<\/p><p>\n/g' tdate.txt # merge the html head, body, foot cat $s_Loc/html/move_head.html >> tomup.html # include an updated line echo "Updated on $(date +%a\ %b\ %d)</p><p>" >> tomup.html cat tdate.txt >> tomup.html cat $s_Loc/html/notes.txt >> tomup.html cat $s_Loc/html/move_foot.html >> tomup.html send_website } # send to the web site send_website() { # rsync -i $haFl -e "ssh -p 99922" /home/homeassistant/.homeassistant/tomup.html mover@999.999.999.999:/home/mover/tomup.html >/dev/null 2>&1 # %%%%%%%%%%%%%%% test area #rsync -e "ssh -i /usr/share/hassio/homeassistant/hafiles/tscripts/hasser -p 58287" $s_Loc/data/tomup.html syncer@192.168.999.999:/mnt/share/hasser/tomup.html >/dev/null 2>&1 # rsync -i $haFl -e "ssh -p 99922" /home/homeassistant/.homeassistant/tomup.html mover@999.999.999.999:/home/mover/tomup2.html >/dev/null 2>&1 # %%%%%%%%%%%%%%% rsync -e "ssh -i /usr/share/hassio/homeassistant/hafiles/tscripts/hasser -p 99922" $s_Loc/data/tomup.html mover@999.999.999.999:/home/mover/tomup.html >/dev/null 2>&1 sleep 1 clean_up } # finish cleanup # #This needs a way to trim the 2 .txt files weekly? #possibly a rotate thing # clean_up() { rm -f coffee.txt2 # rm -f coffee.txt rm -f tomup.txt2 rm -f tdate.txt # rm -f tomup.txt # *****rm -f tomup.html mv tomup.html $s_Loc/archive_files/tomup.html-$(date +%F_%R) # we are done } # start with variables and cd to homeassistant dir dt="" dt2="" dy=$(date +%Y) dz=$(date +%Z) # haFl=$s_Loc/tscripts/hasser # change to /hafiles directory s_Loc=/usr/share/hassio/homeassistant/hafiles # s_Loc=hafiles # %%%%%%%%%%%%%%% test area # s_Loc=/home/tom2/Documents/active/hassio5/usr/share/hassio/homeassistant/hafiles # %%%%%%%%%%%%%%% cd $s_Loc/data # this is part of a test # echo "here" > here # goto fix_c fix_c