ubuntuusers.de

Cronjob-Ausgabe "/bin/sh: cannot create dev/null: Directory nonexistent"

Status: Ungelöst | Ubuntu-Version: Server 10.04 (Lucid Lynx)
Antworten |

homer79

Anmeldungsdatum:
17. November 2007

Beiträge: Zähle...

Hallo,

ich möchte zeitgesteuert (täglich) chkrootkit durchlaufen lassen; die Ausgabe soll nur per Mail zugestellt werden, wenn chkrootkit "etwas gefunden hat", also nur die sterr. Daher habe ich in meiner /etc/crontab folgende Zeile eingefügt:

1
2
#Tägliche Überprüfung durch chkrootkit
25 19   * * *   root    chkrootkit  2>&1 > dev/null | mail -s "chkrootkit WARNING" xy@beispiel.net

Die Mail wird mir auch zugestellt, allerdings mit folgendem Mailtext: "/bin/sh: cannot create dev/null: Directory nonexistent"

Wenn ich "> dev/null" weglasse, macht der Befehl genau das, was er in dieser Konstellation soll, nämlich mir eine Mail zustellen mit der sterr und der stout im Mailtext.

Wo liegt der Gedankenfehler bei mir? Hier noch die gesamte crontab:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
40 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
00 3    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
10 3    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
20 3    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#Datensicherung Home-Verzeichnis (homer verschlüsselt)
48 11   * * *   root    /scripts/backuphome > /dev/null
#Datensicherung Public-Verzeichnis unverschluesselt
49 11   * * *   root    /scripts/backuppublic > /dev/null
#Datensicherung Mails
50 11   * * *   root    /scripts/backupmail > /dev/null
#Tägliche Überprüfung durch chkrootkit
25 19   * * *   root    chkrootkit  2>&1 > dev/null | mail -s "chkrootkit WARNING" xy@beispiel.net
#Tägliche Überprüfung des Systems durch rkhunter auf Einbrüche
52 11   * * *   root    /scripts/rkhunter | mail -s "rkhunter !!! WARNING !!!" xy@beispiel.net
#Wöchentliches Update von rkhunter
00 3    * * 2   root    /scripts/rkhunterupdate 2>&1 | mail -s "rkhunter - woechentlicher Updatebericht" xy@beispiel.net

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Hi homer79,

Tust'e Scheisse rein kommte Scheisse raus!

Ich glaube, Du hast Dich nur etwas mit dem Null-Device vertan:

#Tägliche Überprüfung durch chkrootkit
25 19   * * *   root    chkrootkit  2>&1 > /dev/null | mail -s "chkrootkit WARNING" xy@beispiel.net

LG,

track

homer79

(Themenstarter)

Anmeldungsdatum:
17. November 2007

Beiträge: 199

Hi track,

ups, ich Ossen, das / muss natürlich davor. Bekomme nun zwei Mails; allerdings beide ohne Inhalt ("Null message body; hope that's ok" im Text bei der "Cron-Mail" und überhaupt kein Inhalt bei der Mail über "mail -s").

Zum einen verstehe ich nicht, warum ich zwei Mails bekomme (Cron versucht meines Wissens nur Mails zu versenden, wenn bei der Ausführung der Scripte/Befehle ein Fehler aufgetreten ist; die "Cron-Mail" hätte in diesem Fall also doch garnicht angestossen werden sollen).

Zum anderen hätte in der Mail über "mail -s ..."(bzw. in beiden Mails) eine Ausgabe im Mailtext erscheinen müssen, denn wenn ich den Befehl direkt in der Shell ausführe, erhalte ich in einer Zeile eine "Infect-Meldung":

1
Checking `bindshell'...                                     INFECTED (PORTS:  465)

Diese müsste nach meinem Verständnis doch im Mailtext erscheinen oder?

homer79

(Themenstarter)

Anmeldungsdatum:
17. November 2007

Beiträge: 199

So, ich habe die Datei chkrootkit im Verzeichnis /etc/cron.daily gelöscht; mal gucken, was nach der nächsten Ausführung passiert...

Vain

Avatar von Vain

Anmeldungsdatum:
12. April 2008

Beiträge: 2510

Servus,

so weit ich das im Blick habe, hat das schon alles seine Richtigkeit. Du verwirfst durch ... 2>&1 >/dev/null sämtliche Ausgaben des Befehls. Daran anschließend hast du aber eine Pipe stehen – du leitest also „nichts“ zum mail -s. Ergo ist diese Mail leer. mail beschwert sich aber darüber mit den Worten „Null message body; hope that's ok“, was du dann in der Mail von Cron siehst, da die ganze Ausgabe eines Cronjobs von Cron aufgefangen und dir gemailt wird (je nach verwendeter Cron-Variante kannst du dann noch einstellen, ob und wie solche Mails tatsächlich verschickt werden).

Vermutlich willst du die Umleitung nach /dev/null eigentlich gar nicht haben. Dann landet die komplette Ausgabe vom chkrootkit in der Mail von mail -s.

homer79

(Themenstarter)

Anmeldungsdatum:
17. November 2007

Beiträge: 199

Du verwirfst durch ... 2>&1 >/dev/null sämtliche Ausgaben des Befehls. Daran anschließend hast du aber eine Pipe stehen – du leitest also „nichts“ zum mail -s. Ergo ist diese Mail leer.

Das ist glaube ich so nicht richtig. Ich leite zuerst die sterr in die stout und leite dann die stout ins Nirvana, so dass nur noch die sterr per Mail versendet wird. Und genau das will ich auch, ich möchte nicht die Gesamtausgabe sondern nur die sterr per Mail erhalten. Würde ich alles verwerfen wollen würde ich zuerst > /dev/null und danach 2>&1 eingeben.

Ich lese aber gerade auch, dass der Cron-Daemon nicht nur bei einer fehlerhaften Ausführung eines Scripts versucht, eine Mail zu versenden, sondern generell für den Fall, dass das aufgerufene Script/der Befehl eine Ausgabe erzeugt. Also kann ich mir das mail -s... bei dem Befehl denke ich sparen, da der Befehl ja sowieso eine Ausgabe erzeugt.

Werde noch mal testen...

Vain

Avatar von Vain

Anmeldungsdatum:
12. April 2008

Beiträge: 2510

homer79 schrieb:

Das ist glaube ich so nicht richtig. Ich leite zuerst die sterr in die stout und leite dann die stout ins Nirvana, so dass nur noch die sterr per Mail versendet wird.

Ach du Schreck, richtig. Na so ein Anfängerfehler. Entschuldige.

homer79

(Themenstarter)

Anmeldungsdatum:
17. November 2007

Beiträge: 199

Du brauchst dich nicht zu entschuldigen. Danke für deine Antwort!

Hmmh, so richtig will das Ganze noch nicht. Meine Crontab sieht nun so aus:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
40 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
00 2    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
10 2    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
20 2    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#Datensicherung Home-Verzeichnis (homer verschlüsselt)
00 3    * * *   root    /scripts/backuphome > /dev/null
#Datensicherung Public-Verzeichnis unverschluesselt
00 4    * * *   root    /scripts/backuppublic > /dev/null
#Datensicherung Mails
30 3    * * *   root    /scripts/backupmail > /dev/null
#Wöchentliche Überprüfung des Systems durch chkrootkit auf Einbrüche
08 19   * * *   root    chkrootkit 2>&1  > /dev/null                                     
#Tägliche Überprüfung des Systems durch rkhunter auf Einbrüche
30 4    * * *   root    /scripts/rkhunter
#Wöchentliches Update von rkhunter
30 5    * * 2   root    /scripts/rkhunterupdate 2>&1

Wenn ich das mail -s... weglasse, bekomme ich garkeine Mail und wenn ich das mail -s... dranhänge bekomme ich zwei Mails ohne Inhalt. Trage ich lediglich den Befehl ein bekomme ich eine Mail mit der Gesamtausgabe, also die stout und die sterr.

Antworten |