crontab führt script falsch aus.

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

crontab führt script falsch aus.

Beitrag von latenite » 21.07.2008 23:32:36

Hallo Leute

ich habe folgendes Script in crontab von root aufgenommen um die temp. meiner Platten im Auge zu behalten. (jede min. ist nur zum test so eingestellt)

Code: Alles auswählen

#!/bin/sh


DEVICE="/dev/sda"
MACHINE="fileserver"
TEMPLIMIT=50

DATE=$(date)
VALUETEMP=$(hddtemp -n $DEVICE)
#MAILTXT=""

if [ "$VALUETEMP" -gt "$TEMPLIMIT" ]; then

    MAILTXT=${MAILTXT}"On ${DATE} the device: $DEVICE on $MACHINE got hotter than ${TEMPLIMIT} celcius. ${VALUETEMP} is TOO HOT !! Do something about it!!"
    echo $MAILTXT | mail -s "HARDDRIVE on ${MACHINE} too HOT!! It has ${VALUETEMP} celcius" kai@poeritz.de

else

    MAILTXT=${MAILTXT}"On ${DATE} the device: $DEVICE on $MACHINE had a normal temerature of ${VALUETEMP} celcius. That is OK :)"
    echo $MAILTXT | mail -s "harddrive temperature on ${MACHINE} ok :)" kai@poeritz.de
fi
Wenn ich das script normal ausführe dann kommt einem email mit diesem Inhalt an:
On Di 22. Jul 07:19:03 CEST 2008 the device: /dev/sda on fileserver had a normal temerature of 37 celcius. That is OK :)
wenn es von crontab ausgeführt wird FEHLT die $VALUETEMP Variable in der email.
On Di 22. Jul 07:18:01 CEST 2008 the device: /dev/sda on fileserver had a normal temerature of celcius. That is OK :)
Wieso?? danke für eure Tips. :)

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: crontab führt script falsch aus.

Beitrag von rendegast » 22.07.2008 01:10:34

Versuche 'hddtemp' mal mit Pfad einzusetzen.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

latenite
Beiträge: 688
Registriert: 14.05.2007 01:04:23

Re: crontab führt script falsch aus.

Beitrag von latenite » 22.07.2008 01:35:42

ja das wars danke?

steht das denn nicht in $PATH? komisch?! :roll: :roll:

Benutzeravatar
Snoopy
Beiträge: 4297
Registriert: 17.11.2003 18:26:56
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rh.- Pflz.

Re: crontab führt script falsch aus.

Beitrag von Snoopy » 22.07.2008 07:46:32

Hi,

ein Cronjob der ein Skript anstartet und ein von Deiner Shell (also von Dir) angestossenes Skript ist nicht dasselbe.

Du hast ein Environment auf das zurückgegriffen werden kann (PfadAngaben etc), welches Du bei Deinem Login mitgegeben bekommst.
Der Cronjob hat das nicht.

Diese Sache musst Du abfangen und so "geradebiegen" dass es funktioniert.

Die eine Möglichkeit hat Dir rendegast genannt, nehme absolute Pfade für die Befehle, damit der Cronjob diese Befehle auch findet...
Eine andere Möglichkeit ist es, in dem Skript das Environment bzw die Suchpfade mitzugeben um ihm zu zeigen, wo er die Befehle suchen kann/soll.

Bsp.:

Code: Alles auswählen

#!/bin/sh

# Pfade setzen damit Cron nicht im dunkeln herumlaeuft...
PATH=/sbin:/bin:/usr/bin:/usr/sbin:/usr/bin/X11:

DEVICE="/dev/sda"
MACHINE="fileserver"
TEMPLIMIT=50

DATE=$(date)
VALUETEMP=$(hddtemp -n $DEVICE)
#MAILTXT=""

if [ "$VALUETEMP" -gt "$TEMPLIMIT" ]; then

    MAILTXT=${MAILTXT}"On ${DATE} the device: $DEVICE on $MACHINE got hotter than ${TEMPLIMIT} celcius. ${VALUETEMP} is TOO HOT !! Do something about it!!"
    echo $MAILTXT | mail -s "HARDDRIVE on ${MACHINE} too HOT!! It has ${VALUETEMP} celcius" kai@poeritz.de

else

    MAILTXT=${MAILTXT}"On ${DATE} the device: $DEVICE on $MACHINE had a normal temerature of ${VALUETEMP} celcius. That is OK :)"
    echo $MAILTXT | mail -s "harddrive temperature on ${MACHINE} ok :)" kai@poeritz.de
fi
Das PATH=/sbin:/bin:/usr/bin:/usr/sbin:/usr/bin/X11: ist dort der entscheidende Punkt.

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Re: crontab führt script falsch aus.

Beitrag von nepos » 22.07.2008 09:07:44

Steht eigentlich alles in man 5 crontab haarklein beschrieben...

Antworten