crontab job wird nicht ausgeführt :-/

Art Vandelay

Lieutenant
Registriert
Apr. 2020
Beiträge
774
Hallo Linux Cracks,

auf meinem Raspberry Pi Zero WH unter Raspberry Pi OS habe ich einen root crontab Job eingerichtet, der alle 60 Minuten ein Python script starten soll.

Code:
*/60 * * * * /usr/bin/python3 /data/scripts/nmap/check.py

Das Script startet einen nmap scan, der die Ausgabe in eine Textdatei schreibt, anschließend wieder ausliest und weiter verarbeitet. Manuelles ausführen des Scripts funktioniert einwandfrei.

im syslog log wird die Ausführung des Scripts auch Stunde für Stunde protokolliert.

Code:
...
Jun  8 22:00:01 raspi CRON[22695]: (root) CMD (/usr/bin/python3 /data/scripts/nmap/check.py)
Jun  8 23:00:01 raspi CRON[23372]: (root) CMD (/usr/bin/python3 /data/scripts/nmap/check.py)

Die Berechtigung meiner Ausgabe Textdatei habe ich bereits auf 777 gesetzt, aber es ändert sich nichts. Die Pfadangabe /usr/bin/ für den python3 Aufruf habe ich auch nachträglich reingemacht, aber auch ohne Änderung.

Auf was kann ich noch achten warum das hier nicht richtig läuft?

Danke euch im Vorraus! :-)
 
Wie du im Syslog selber schon gesehen hast, wird dein Cronjob sehr wohl ausgeführt. Die Frage die du dir stattdessen stellen solltest lautet: Warum tut dein Script nicht das was du erwartest. Ohne das Script zu kennen ist das alles wilde Spekulation.

Allgemeine Tipps:
  • Erwartest du implizit ein bestimmtes working directory? "cd /bla/blubb && /usr/bin/python3 ..." schafft schnell Abhilfe.
  • Prüfe stdout und stderr deines Jobs, beides kannst du direkt aus der crontab in Dateien umleiten.
  • Bitte nicht stumpf alles auf 777 setzen und als root ausführen. Lieber gleich richtig, sonst wird dir das später auf die Füße fallen.
 
  • Gefällt mir
Reaktionen: Art Vandelay, guzzisti, snaxilian und eine weitere Person
Deine interaktive Shell, wenn du dich angemeldet hast (ja, auch als root) sieht andere ENVIRONMENT VARIABLES als so eine nicht-interaktive Cron-Session.
Wenn dein Python-Script also nmap aufruft: Nutzt du da nur "nmap", sprich den relativen Pfad weil du davon ausgehst, dass dies alles in $PATH steht? Du solltest da mit absoluten Pfaden arbeiten.
Ansonsten stdout und sterr mal in Dateien umleiten um ggf. mehr sehen zu können wie schon vorgeschlagen wurde.

Blind alles auf 777 setzen und als root laufen lassen ist selten zielführend....
 
  • Gefällt mir
Reaktionen: guzzisti
Der Tipp mit den absoluten Pfaden war es wohl.
Hier die Zeile aus dem Python Script:

Code:
vorher:
subprocess.call(["nmap",  "-sn", "192.168.8.0/24", "-oG", "outg.txt"])

nachher:
subprocess.call(["nmap",  "-sn", "192.168.8.0/24", "-oG", "/data/scripts/nmap/outg.txt"])

Die Ausgabedatei des nmap Aufrufs wird erzeugt, die stdout Ausgabe ist auch einwandfrei, alles cool.
Vorher habe ich schon die nicht benötigten 777 Berechtigungen wieder zurück gefahren.

Danke für den Tipp!
 
Zurück
Oben