Hallo Leute, ich bräuchte bitte Hilfe zu meinem Bashscript. Es sollen die Verkehrsinfos von einer Seite aus dem Internet per Webscraping geholt werden (funktioniert bereits) und dann diese in regelmäßigen Abständen immer wieder abgeglichen werden. Gab es Änderungen sollen diese Infos per SIGNAL an eine Handynummer verschickt werden. Ich habe Probleme damit, dass die Erkennung, ob es neue Verkehrsinfos gibt bei mir nicht funktioniert.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | !/bin/bash # Es sollen die aktuellen Verkehrsinfos abgeholt und per SIGNAL Messenger verteilt werden LOGFILE="/var/log/myVERKEHR.log" #$DIFF beinhaltet den COUNTstart als Zahl DIFF="/var/log/myVERKEHRdiff.txt" # COUNTDIFF="/var/log/myVERKEHRcountdiff.txt" #SIGNAL_BINARY=/opt/signal-cli-0.10.6/bin/signal-cli SIGNAL_BINARY=/home/pi/signal_rpi/signal-cli-0.9.0/bin RUFNUMMERN="+49xxx" URL="https://www.bayernwelle.de/verkehrsservice" COUNTINIT=0 touch $LOGFILE stunde=$(date '+%H') minute=$(date '+%M') function StartCounter { touch $DIFF curl -s $URL | html2text -utf8 | sed -n '/Blitzer/,$p' | sed -n '/Baustellen/q;p' > $DIFF echo "Habe Datei $DIFF angelegt." echo "" cat $DIFF # Zeilenanzahl in Datei speichern COUNTstart=$(cat $DIFF | wc -l) echo "$COUNTstart" > $COUNTDIFF echo "" echo "StartCounter in $COUNTDIFF geschrieben." } #Erster Aufruf function DiffDa { # check ob die Datei $DIFF existiert if [[ -f $DIFF ]] then echo "Datei $DIFF ist da." # Ins Logfile fortlaufend schreiben echo "`date`: " >> $LOGFILE echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1 >> $LOGFILE curl -s $URL | html2text -utf8 | sed -n '/Blitzer/,$p' | sed -n '/Baustellen/q;p' >> $LOGFILE echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> $LOGFILE else # touch $DIFF # curl -s $URL | html2text -utf8 | sed -n '/Blitzer/,$p' | sed -n '/Baustellen/q;p' > $DIFF # echo "Habe Datei angelegt." # cat $DIFF # # Zeilenanzahl in Datei speichern # COUNTstart=$(cat $DIFF | wc -l) # echo "$COUNTstart" > $COUNTDIFF # echo "und weg." exit fi } function main { # Ins Logfile fortlaufend schreiben COUNT2=$(cat $DIFF | wc -l) echo "aktueller Counter - COUNT2: $COUNT2" #Counter aus Datei lesen read COUNTstart < $COUNTDIFF echo "CounterSTART: $COUNTstart" #Counter vergleichen if [ $COUNTstart -eq $COUNT2 ]; then echo "nichts machen" # cat $LOGFILE else echo "Hole die aktuellen Verkehrsinfos und versende per SIGNAL" # Ins Logfile fortlaufend schreiben echo "`date`: " >> $LOGFILE echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> $LOGFILE curl -s $URL | html2text -utf8 | sed -n '/Blitzer/,$p' | sed -n '/Baustellen/q;p' >> $LOGFILE curl -s $URL | html2text -utf8 | sed -n '/Blitzer/,$p' | sed -n '/Baustellen/q;p' | signal-cli --verbose send> echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> $LOGFILE fi } #main: # von 5:30 bis 20 Uhr if test $stunde -eq 5 -a $minute -ge 30 -o $stunde -le 20 -a $stunde -ge 8 ; then clear echo "führe Skript aus" DiffDa StartCounter main else echo "jetzt nicht ausführen und aufräumen" rm $LOGFILE rm $DIFF fi exit |