script per Cronjob ausführen

B

bigbee

Grünschnabel
Guten Tag,

ich habe das Problem, dass ein Batch Script von mir per Crontab ausgeführt nciht das macht was er soll.
Wenn ich den gleichen Script jedoch manuell ausführe funktioniert er prima.

Hier der Eintrag in der Crontab [/etc/crontab]:
Code:
0 3 * * * root /srv/www/htdocs/html/mandate/static/update
wenn ich mich im verzeichnis /etc/ befinde und dann
Code:
/srv/www/htdocs/html/mandate/static/update
eintippe funktioniert es.

Hier der Script selber:
Code:
#!/bin/bash
cd /srv/www/htdocs/html/mandate/static/
./static_blabla1
./static_blabla2

"blabla2" ist dabei der Script der nicht richtig ausgeführt wird. Hier dessen inhalt:
Code:
#!/bin/bash

rm -R ./abc/*
cd abc
wget -p -l inf -k -r  -nH -B http://domainname.com/mandate/abc/ --cut-dir=2 -E http://domainname.com/mandate/abc/
sed -i 's/ABQIAAAABDPEoQWZY4irqrQaZFVT4cYBrvdQavsZ2GWFSNrbll2xT3x8Jgek5SmfX7C2dachZ_xJneRA/ABQIAAAABDPEoQWZY4irqrQaZFVT4BTx8KUJwBySggmPXdHks03p64Wgzuh8fsnfz0lpfwTNW3A/g' ./startseite-kontakt/anfahrt.html
mv index.html index2.html
cd ..
mkdir ./abc/cache
mkdir ./abc/upload
mkdir ./abc/images
mkdir ./abc/js
cp -R /srv/www/htdocs/html/mandate/abc/js/* ./abc/js/
cp -R /srv/www/htdocs/html/mandate/abc/images/* ./abc/images/
cp -R /srv/www/htdocs/html/mandate/abc/cache/* ./abc/cache/
cp -R /srv/www/htdocs/html/mandate/abc/upload/* ./abc/upload/
cd abc
wput ./* ftp://beutzer:pw@domain2.de
cd ..

Der Script soll einfach aus einer dynamischen Seite die mittels eines CMS-Systems generiert wurde, eine statische Seite mit html Seiten machen und diese auf einen Anderen Server hochladen.
Per Crontab ausgeführ, entsteht in einigen Seiten kaudawelsch, da steht dann anstatt "Adventsausstellung" plötzlich "Adventsausstelluhre". Dieser sed Befehl selber der die Google-Api austauscht funktioniert allerdings gut.

Vielleicht habt ihr ja eine Idee, wieso das nicht richtig klappt??

Gruß BigBee
 
wenn ich mich im verzeichnis /etc/ befinde und dann
Code:
/srv/www/htdocs/html/mandate/static/update
eintippe funktioniert es.
Du darfst nicht davon ausgehen, dass das CWD /etc ist, wenn das Skript von cron ausgefuehrt wird. Du solltest in allen beteiligten Skripten unbedingt mit absoluten Pfaden arbeiten!

root sollte eigentlich eine Email bekommen haben, wenn das Skript mit einem Fehler endet, allerdings habe ich es mir nicht so genau angeschaut, kann ja sein, dass es zu keinem Fehler kommt, wenn man sich nicht in /etc/ befindet, sondern einfach nur nichts macht.
 
/srv/www/htdocs/html/mandate/static/update ist doch ein vollständiger Pfad. Diese "wenn ich mich im verzeichnis /etc befinde und..." hätte ich auch weglassen können. Egal wo ich mich befinde, der Script funktioniert, wenn ich ihn manuell ausführe! Kann es sein, dass dieses wget irgendwie Probleme hat wenn es per crontab ausgeführt wird?

EDIT: der fehler scheint beim hochladen zu liegen. Ich habe mal die Mails die der/die/das shell mir geschickt hat durchgeguckt und beim ftp befehl steht als kommentar "[stripped 2k]". Wie kann ich dafür sorgen, dass das nicht passiert? Bzw. wodran liegt das?

Vielen Dank,

bigbee
 
Zuletzt bearbeitet:

Ähnliche Themen

NAS-Drive Mount in Bash-Script über crontab

Crontab und Scripts - Problem

Ordner kopieren per script

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

Script zum Bereinigen von Dateien mit Unterverzeichnissen (Schadcode löschen) eilt

Zurück
Oben