B
brusko
Mitglied
hallo
und nen schönen Tag wünsche ich,
Ich bin dabei ein script zu schreiben das mir die daten in eine log-datei schreibt.
Das klappt auch soweit ganz gut aber nun wollte ich mit sed mir diverse Codes in Namen umändern was auch klappt wenn ich das script per Hand an der shell starte. wenn ich aber per crontab es starte wird sed im script nicht ausgeführt.
Könnte mir jemand vieleicht sagen warum nicht ?
ich mal das script:
und hier die datei:
mein system ist FreeBSD und als shell die sh
und nen schönen Tag wünsche ich,
Ich bin dabei ein script zu schreiben das mir die daten in eine log-datei schreibt.
Das klappt auch soweit ganz gut aber nun wollte ich mit sed mir diverse Codes in Namen umändern was auch klappt wenn ich das script per Hand an der shell starte. wenn ich aber per crontab es starte wird sed im script nicht ausgeführt.
Könnte mir jemand vieleicht sagen warum nicht ?
ich mal das script:
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/puffertemplogfile.puffer
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
# Aendere Fuehlercode in Namen
IFS='
'
sensors="105FB2720108004F/Wohnzimmer
10C7A8720108009E/Flur"
sedcmd='sed'
for sensor in $sensors; {
sedcmd="$sedcmd -e 's/$sensor/1'"
}
eval "$sedcmd < $templogdatei > test.test"
und hier die datei:
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!
mein system ist FreeBSD und als shell die sh