emails-senden aus Script, das in Cronjob eingebunden ist

M

murxx

murxx
:hilfe2:

Ich habe folgendes Problem:

Ich habe ein Shell-Script geschrieben, welches eine Replikation zwischen verschiedenen Maschinen anstoesst. In diesem Script (replicate.sh) wird eine email an meinen User ********** geschickt (mittels Unix "mail"-Funktion), sobald ein Fehler auftritt (es werden hierbei zwei Typen von emails verschickt, je nachdem, welcher Fehler aufgetreten ist).

Das ganze funktioniert auch ganz wunderbar, wenn ich das Script auf der Kommandozeile ausfuehre.

Jetzt hab ich es allerdings in einen cronjob eingebunden, sodass das Script automatisch alle 5 Minuten laeuft:
*/5 * * * * replicate.sh

Das Problem ist nun, dass die emails, die in dem "replicate.sh" script geschickt werden sollen, nicht mehr ankommen - nur die von crontab standardmaessig verschickten emails erreichen ihr Ziel.

Kann mir jemand helfen, wie es funktioniert, dass die emails aus dem Script wieder geschickt werden? ?(
 
Hallo
Überprüfe mal die Pfade in deinem Script.
Cronjobs laufen nicht in der interaktiven Shell, deshalb ist die in der Loginshell gesetzte Variable PATH nicht die gleiche.
Setze eventuell die PATH in der Crontab, oder im Script richtig, oder verwende für alles volle Pfadangaben.
Generiere dir ein Script als test, welches eine mail sendet und schau was passiert.

Gruß Wolfgang
 
Hm...
Ich hab mir ein Test-file mit dem folgenden Inhalt geschrieben und in die Cronjobs gehaengt:

#!/bin/ksh
mail -s "Test email aus Cronjob" **********
echo "This is a test"

Bei diesem bekomme ich regelmaessig ein email...
Dieses liegt im selben Verzeichnis wie das eigentliche Script "replicate.sh" - in diesem wird auch nie das Verzeichnis gewechselt... Beide werden mit dem gleichen User ausgefuehrt...
 
Hallo
Also ohne entsprechende Skriptstellen zu sehen, wird das hier nur ein Spekulieren.
Und dazu habe ich keine Lust. ;)
 
Also hier ein Ausschnitt aus meinem Script - das ganze hier rein zu stellen waere wohl doch etwas zu viel, dies ist der Teil, in dem das email gesendet werden soll... Ich hoffe, das passt so - wie gesagt, das Script liegt im gleichen Verzeichnis wie mein test-Script, es hat die gleichen Berechtigungen wie das test-Script. Zusaetzlich hab ich in mein test-Script noch "cd `dirname $0`; export INITDIR=`pwd`" eingebaut - das Test-email kommt immer noch an, das andere noch immer nicht:

Code:
#!/bin/ksh

set +u
unset env

cd `dirname $0`
export INITDIR=`pwd`

TIMESTAMP=`date +%Y%m%d_%H%M`
HOST=`hostname`
env=$1
target=$2
env_short="`echo $env | sed 's|\(.*\)/||g'`"

Start_Replication automatic $HOST $target:$env $env "2>&1 | tee -a 
log_${env_short}.txt"   # Start up replication

if [ "$?" != "0" ];          # Check return code
then
   echo "Problems during replication occurred!"
   cat log_${env_short}.txt | mail -s "Replication errors on $HOST for environment $env" "murxx@test.at"
elif [ -n "`cat log_${env_short}.txt | grep \"symlink has no referent\"`" ];
then
   cat log_${env_short}.txt | grep -v "failed" | mail -s "Replication SUCCESSFUL, but SYMLINKS with no referent found on $HOST for environment $env" "murxx@test.at"
   echo "Successful replication but problematic sumlinks found!"
   echo "`date`: from $HOST to $target:$env" >> history_${env_short}
else
   cat log_${env_short}.txt | grep -v "failed" | mail -s "Replication SUCCESSFUL on $HOST for environment $env" "murxx@test.at"
   echo "Successful replication!"
   echo "`date`: from $HOST to $target:$env" >> history_${env_short}
fi

Soll ich noch mehr aus dem Script hier angeben? (Die Funktion "Start_Replication" ruft lediglich ein rsync-Kommando auf)

Hier zum Vergleich mein test-Script:
Code:
#!/bin/ksh
cd `dirname $0`
export INITDIR=`pwd`
mail -s "Test email aus Cronjob mit dirname-change" "murxx@test.at"
echo $PATH
echo "This is a test"
touch /tmp/doris_test_file

:(
 
Hab das Problem entdeckt!
Im crontab war ein anderer Mail-Empfaenger eingestellt, der hat scheinbar (warum auch immer) meinen Script-Mail-Empfaenger ueberschrieben.
Jetzt hab ich das "MAILTO=" entfernt und es funktioniert.

Danke trotzdem!
 

Ähnliche Themen

NAS-Drive Mount in Bash-Script über crontab

script wird von cronjob nicht korrekt ausgeführt - Centos 5

script wird als cronjob anders ausgeführt

Zurück
Oben