Hey Leute,
ich habe ein Problem mit Shell Script schreiben. Das Script sollte folgendes durchführen.
Das Script funktionierte solange bis ich die If Abfrage hinzufügte. Die If Abfrage sollte abfragen, ob ein Datensatz vorhanden ist und wenn nicht soll er einen neuen hinzufügen und in der Spalte Ort ein Neu hinzufügen, um nachträglich dieses noch zu ändern. Das Script wird alle 10 Minuten durchgeführt und soll durch die If Abfrage eigentlich automatisch neue Sensoren erkennen und ergänzen.
Code
#! /bin/sh
# Das Script ermittelt die Temperaturen aller 1-Wire Fühler und
# listet diese in einer Tabelle auf.
echo
echo " Temperaturanzeige"
echo " ================="
echo
echo " #####################################"
echo " # ID............. | Temperatur..... #"
echo " #####################################"
for i in $(cat /sys/devices/w1_bus_master1/w1_master_slaves)
do v=$(echo "scale=2; $(tail -1 /sys/devices/w1_bus_master1/${i}/w1_slave | cut -d '=' -f 2) / 1000" | bc -l)
echo " #" $i "|" $v °C " #"
# Zählen der Datensätze und führt INSERT durch, wenn Anzahl ungleich 1 ist und führt UPDATE durch,
# wenn Anzahl gleich 0 ist
QUERY="select count (*) from technik where ID = '$i'"
count=$(echo mysql -h 'localhost' -u root --password='passwort' technik << eof $query eof)
# Sobald count 1 entspricht wird lediglich ein UPDATE durchgeführt, sonst wird ein INSERT durchgeführt um einen Neuen Sensor hinzuzufügen.
if [$count -eq 0]
then
QUERY="INSERT INTO temperatur (ID, Ort, Wert) VALUES ('$i', 'Neu', '$v')"
echo $QUERY | mysql -h 'localhost' -u root --password='passwort' technik
elif [$count -eq 1]
then
QUERY="UPDATE temperatur SET Wert = '$v' WHERE ID = '$i'"
echo $QUERY | mysql -h 'localhost' -u root --password='passwort' technik
fi
zeit=$(date +%H:%M)
datum=$(date +%x)
QUERY="INSERT INTO temp_aufzeichnung (ID, Temperatur, Zeit, Datum) VALUES ('$i', '$v', '$zeit', '$datum')"
echo $QUERY | mysql -h 'localhost' -u root --password='passwort' technik
done
echo " #####################################"
echo
rm /var/www/datum.dat
date -R > /var/www/datum.dat
Alles anzeigen
Bei Fragen bitte um Rückmeldung.
Michael