[debian] script in /etc/daily.cron/ laeuft nicht

DamnedFreak

New Member
Hallo,

Ich habe ein Shell Skript (backup.sh) in dem Verzeichnis /etc/daily.cron abgelegt und das Skript ausfuehrbar gechmodded. Wenn ich das Skript manuell ausfuehre, funzt es problemlos.

ls -al von /etc/daily.cron:

Code:
####:/etc/cron.daily# ls -al
total 64
drwxr-xr-x  2 root root 4096 2011-12-14 21:54 .
drwxr-xr-x 61 root root 4096 2011-12-10 11:24 ..
-rwxr-xr-x  1 root root  633 2011-09-04 22:53 apache2
-rwxr-xr-x  1 root root 7482 2009-04-20 22:25 apt
-rwxr-xr-x  1 root root   67 2009-01-31 16:18 apticron
-rwxr-xr-x  1 root root  314 2008-12-05 10:15 aptitude
-rwxrwxrwx  1 root root  616 2011-12-14 21:33 backup.sh
-rwxr-xr-x  1 root root  502 2007-11-20 09:47 bsdmainutils
-rwxr-xr-x  1 root root 4073 2011-01-30 22:19 exim4-base
-rwxr-xr-x  1 root root   89 2008-10-08 17:51 logrotate
-rwxr-xr-x  1 root root  954 2009-01-25 04:08 man-db
-rw-r--r--  1 root root  102 2008-09-28 13:07 .placeholder
-rwxr-xr-x  1 root root  651 2008-08-25 19:03 rkhunter
-rwxr-xr-x  1 root root 3285 2010-01-29 15:24 sendmail
-rwxr-xr-x  1 root root 3349 2008-09-28 13:07 standard

Inhalt von backup.sh:
Code:
tar -cvf /autobackups/www$(date +%y%m%d).tar /var/www
tar -cvf /autobackups/etc$(date +%y%m%d).tar /etc
tar -cvf /autobackups/logs$(date +%y%m%d).tar /var/log
mysqldump -u root -#### --all-databases > /autobackups/dump$(date +%y%m%d).sql

ftp -in ####### <<EOF
user ### ###
put /autobackups/www$(date +%y%m%d).tar /autobackups/www$(date +%y%m%d).tar
put /autobackups/etc$(date +%y%m%d).tar /autobackups/etc$(date +%y%m%d).tar
put /autobackups/logs$(date +%y%m%d).tar /autobackups/logs$(date +%y%m%d).tar
put /autobackups/dump$(date +%y%m%d).sql /autobackups/dump$(date +%y%m%d).sql
exit
EOF

Alle anderen Skripte in /etc/daily.cron laufen taeglich. Ich habe mir die /var/log/syslog angesehen, jedoch keine Fehlermeldung bezueglich des Cronjob oder des Skripts gefunden.

Jemand eine Idee?

MfG,
Steve
 
Hallo!
Inhalt von backup.sh:
Code:
tar -cvf /autobackups/www$(date +%y%m%d).tar /var/www
tar -cvf /autobackups/etc$(date +%y%m%d).tar /etc
tar -cvf /autobackups/logs$(date +%y%m%d).tar /var/log
...
Ist das wirklich der komplette Inhalt? Das fehlt für mich ein
Code:
#!/bin/sh
am Anfang.

mfG
Thorsten
 
Das ist der komplette Inhalt.

Manuell angestossen funktioniert das Skript auch ohne

Code:
#!/bin/sh

Muss ich die Zeile hinzufuegen damit es per cronjob funktioniert?

Regards,
Steve
 
Ja, nur so weiß Cron, wer das Script ausführen soll, denn das Script wird ja nicht direkt von der bash gestartet.
Wenn es ein Perl-Script ist, muß die Zeile natürlich entsprechend auf der perl-Binary zeigen.
 
Neben dem fehlenden Shebang fehlen auch die vollständigen Pfade zu den Binaries im Script und je nach Distro mag crond auch keine Fileextensions bei den Scripts.
 
Ich hab das shebang (wtf? :D) hinzugefugt und die extension entfernt - mal sehen ob es morgen frueh klappt.

Neben dem fehlenden Shebang fehlen auch die vollständigen Pfade zu den Binaries im Script

Welche Binaries? FTP, tar und mysqldump? Ich denke dass es ohne funktioniert, jetzt da die Shell am Anfang des Skripts eingebunden wird. Wir werden sehen..

Danke an alle!

Steve
 
Noch zwei Hinweise:
-rwxrwxrwx 1 root root 616 2011-12-14 21:33 backup.sh
...
mysqldump -u root -#### --all-databases
Das MySQL-root-Passwort ist hier für alle User auslesbar!

Und evtl. solltest Du mal die Emails von root lesen. Dort ist die Fehlermeldung von Cron garantiert aufgelaufen.

PS: Hinter "Fremdwörtern" schreibt man nicht "wtf" sondern tippt die in Wikipedia/Google ein um zu verstehen, was jemand meint.

huschi.
 
Nachdem ich das '#!/bin/sh' hinzugefuegt habe und das Skript von 'backup.sh' nach 'backup' umbenannt habe (glaube nicht, dass das ausschlaggebend ist?), hat cron es heute morgen problemlos ausgefuehrt.

Das MySQL-root-Passwort ist hier für alle User auslesbar!
Ist mir bewusst.

Und evtl. solltest Du mal die Emails von root lesen. Dort ist die Fehlermeldung von Cron garantiert aufgelaufen.
Das tue ich. In der Tat gibt es eine Fehlermeldung von Cron, jedoch hat die nichts mit diesem Problem zu tun:

Code:
/etc/cron.daily/logrotate:
error: error running shared postrotate script for /var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log 
run-parts: /etc/cron.daily/logrotate exited with return code 1

PS: Hinter "Fremdwörtern" schreibt man nicht "wtf" sondern tippt die in Wikipedia/Google ein um zu verstehen, was jemand meint.
Auch das habe ich getan, bzw ich hab auch ohne zu googlen verstanden was er meint. Das 'wtf' war nur Ausdruck meiner Verwunderung ueber den aussergewoehnlichen Namen, kein Grund gleich motzig zu werden.

Vielen Dank an alle die sinnvolle Antworten parat hatten.

MfG,
Steve
 
Back
Top