Guten Abend, hier mal mein script das bislang die Temperaturen ausliest :
Die Ausgabe in der Datei templogdatei sieht so aus :
nun möchte ich gerne im script mit einbauen das er zum schluss die letzten 18 fühlerzeilen ausliest (der block wird alle 2 minuten mit neuen daten drangehangen)
und dann den 16stelligen Code austauscht...z.b fühler 17 105FB2720108004F soll woh wohnzimmer sein. wäre das so machbar ?
grüße Michael
PHP:
#!/bin/sh
# script zum starten des Programmes Digitemp_DS9097
# mit chown root tempscript.sh
# chmod u+s tempscript.sh bearbeitet
# in /etc/newsyslog.conf mus eingeben werdem:
# /home/michael/templogfile.log root:wheel 640 7 * @T00 N
# in /etc/crontab mus eingeben werden:
# */2 * * * * root /home/michael/tempscript.sh >/dev/null 2>&1 letzte wegen ausgabe zu null wichtig
# es muss sysutils/smartmontools installiert sein
# es muss sysutils/mbmon installiert sein
# Fuehleranzahl mit Festplatte usw rechnen
anzahlfuehler=22
templogdatei=/home/michael/templogfile.log
schnittstelle=/dev/cuad0
ausleseProgramm=/usr/local/bin/digitemp_DS9097
auslesesmartctl=/usr/local/sbin/smartctl
hardwaretemp=/usr/local/bin/mbmon
festplatte1=/dev/ad0
tageszeit=`date +%H:%M`
zeitstempel=`date +%b" "%d" "%H:%M:%S`
upzeit=`expr \( $(date +%s) - $(sysctl -n kern.boottime | awk -F '[ ,]' '{print $4}') \)`
# Lese und Speicher Sensoren wenn es 00:00 ist
# oder nach einem Neustart wenn upzeit kleiner/gleich 120 sec
if [ "$tageszeit" = "00:00" -o $upzeit -le 120 ]
then
$ausleseProgramm -i -s $schnittstelle >> $templogdatei
echo Sensoren initialisiert! >> $templogdatei
fi
# Lese und Speicher Temperatur
echo $zeitstempel Festplatte $festplatte1 C: `$auslesesmartctl -a $festplatte1 | awk '/^194/ {print $10}'` >> $templogdatei
echo $zeitstempel Motherboard C: `$hardwaretemp -r -c1 | awk 'NR==1 {print $3}'` >> $templogdatei
echo $zeitstempel CPU C: `$hardwaretemp -r -c1 | awk 'NR==2 {print $3}'` >> $templogdatei
echo $zeitstempel Mainboard/Kontroll-Chip C: `$hardwaretemp -r -c1 | awk 'NR==3 {print $3}'` >> $templogdatei
$ausleseProgramm -s $schnittstelle -r -750 -a -l $templogdatei -o "%b %d %H:%M:%S Sensor Nr.:%s %R C: %.2C"
# Lese die letzten $anzahlfuehler Zeilen der $templogdatei aus und ueberpruefe
# ob sich da beendet! oder initialisiert! befindet
letztenzeilen=`tail -n $anzahlfuehler /$templogdatei`
if [ -n "`echo $letztenzeilen | grep -w -e beendet! -e initialisiert!`" ]
then
echo !!!Fehler!!! >> $templogdatei
else
echo Auslesung beendet! >> $templogdatei
fi
Die Ausgabe in der Datei templogdatei sieht so aus :
PHP:
Apr 26 21:06:00 Festplatte /dev/ad0 C: 27
Apr 26 21:06:00 Motherboard C: 35.5
Apr 26 21:06:00 CPU C: 47.2
Apr 26 21:06:00 Mainboard/Kontroll-Chip C: 21.6
Apr 26 21:06:02 Sensor Nr.:0 10603F72010800A1 C: 20.94
Apr 26 21:06:03 Sensor Nr.:1 1004BB720108006A C: 20.88
Apr 26 21:06:04 Sensor Nr.:2 1094B372010800E5 C: 20.94
Apr 26 21:06:05 Sensor Nr.:3 104A85720108002A C: 20.88
Apr 26 21:06:07 Sensor Nr.:4 101A9072010800AA C: 20.94
Apr 26 21:06:08 Sensor Nr.:5 10DA9672010800A9 C: 21.00
Apr 26 21:06:09 Sensor Nr.:6 10FABB720108000B C: 20.88
Apr 26 21:06:10 Sensor Nr.:7 1076337201080069 C: 20.94
Apr 26 21:06:12 Sensor Nr.:8 103E3B7201080083 C: 21.00
Apr 26 21:06:13 Sensor Nr.:9 1081377201080081 C: 20.81
Apr 26 21:06:14 Sensor Nr.:10 10C1B272010800ED C: 20.94
Apr 26 21:06:15 Sensor Nr.:11 105134720108000B C: 20.94
Apr 26 21:06:16 Sensor Nr.:12 10D999720108009F C: 20.81
Apr 26 21:06:18 Sensor Nr.:13 10E53072010800CF C: 20.94
Apr 26 21:06:19 Sensor Nr.:14 10437F72010800A7 C: 20.88
Apr 26 21:06:20 Sensor Nr.:15 10332D99010800F4 C: 20.88
Apr 26 21:06:21 Sensor Nr.:16 10C7A8720108009E C: 20.94
Apr 26 21:06:23 Sensor Nr.:17 105FB2720108004F C: 20.94
Auslesung beendet!
und dann den 16stelligen Code austauscht...z.b fühler 17 105FB2720108004F soll woh wohnzimmer sein. wäre das so machbar ?
grüße Michael
Zuletzt bearbeitet: