2016-08-07 23 views
-1

Hoffe jemand kann mir hier helfen.pfSense Cron-Job nicht ausgeführt oder keine Ausgabe

Ich habe ein Python-Skript geschrieben, das alle 5 Minuten unter CRON ausgeführt werden soll. mit der allgemeinen Sicherheits Praxis der geringst möglichen Privilegien Im Einklang I:

  • erstellt einen Benutzer „custom“ für Skripte benutzerdefinierte verwenden
  • eine Gruppe „custom“ erstellt (wollen nichts unter niemand laufen haben Zugang) und;
  • setzen das Skript (Monitor) in/home/custom/bin

Die shebang im Skript ist:

#/usr/bin/env python2.7

die einzige Berechtigung zum Benutzer benutzerdefinierte gegeben ist:

Inherited from Name Description     Action 
       User - System: Shell account access Indicates whether the user is able to login for example via SSH. 

Ausführen des Skripts mit dem Befehl /home/cust om/bin/monitor über die Befehlszeile funktioniert unabhängig vom aktuellen Arbeitsverzeichnis.

Ich habe versucht, cd/first, um sicherzustellen, dass es kein Pfadproblem war, und das Skript wurde ordnungsgemäß ausgeführt.

Das Skript schreibt 2-Dateien auf dem ersten Lauf und nachfolgenden Läufen anhängen auf diese Dateien im Verzeichnis/home/custom/bin/mondata

ich das cron-Paket installiert und erstellt den folgenden Eintrag:

*/5 * * * * custom/home/custom/bin/Monitor

(Es scheint nicht, eine "Apply Changes" zu sein, also gehe ich davon aus, dass ich nicht neu starten müssen oder irgendetwas tun, um die Änderungen zu laden.) (Der obige Eintrag und viele andere werden in der WebGU angezeigt Ich, und ich weiß, dass mehrere dieser anderen Cron-Jobs ausgeführt werden.)

Nachdem ich genug Zeit für das Ausführen des Skripts gewartet habe, habe ich für die Ausgabe überprüft und es gab nichts.

Das Ändern der Benutzerdefinition in root für Testzwecke (nur für den Fall, dass es sich um ein Berechtigungsproblem handelte) behebt das Problem nicht.

Hier werden die entsprechenden Dateiberechtigungen sind:

[2.3.2-RELEASE][[email protected]]/home/custom/bin: ls -laR ~ 
total 52 
drwxr-xr-x 4 custom nobody 512 Aug 7 00:14 . 
drwxr-xr-x 4 root wheel 512 Jul 27 15:24 .. 
drwxr-xr-x 3 custom custom 512 Aug 7 00:14 bin 

/home/custom/bin: 
total 20 
drwxr-xr-x 3 custom custom 512 Aug 7 00:14 . 
drwxr-xr-x 4 custom nobody 512 Aug 7 00:14 .. 
drwxrwx--- 2 custom custom 512 Aug 7 00:07 mondata <-Script output goes here 
-rwxr-xr-x 1 custom custom 4663 Aug 5 22:44 monitor <-The script 

/home/custom/bin/mondata: 
total 8 
drwxrwx--- 2 custom custom 512 Aug 7 00:07 .   <-NO OUTPUT! (I deleted the files manually after successful tests) 
drwxr-xr-x 3 custom custom 512 Aug 7 00:14 .. 

ich für eine Fehlermeldung eingecheckt: Status/System/Logs/System/Allgemein - Nichts gefunden.

Ich versuchte sogar vorübergehend die Berechtigungen für/home/custom/bin/mondata auf 777 und Einstellen der cron Benutzer Ändern zu verankern (völlig inakzeptabel Sicherheit Praxis nur zum Testen, aber auch das hat nicht funktioniert.)

Ich habe keine Möglichkeit zu wissen, ob das Skript ausgeführt wird und die Datei Schreibvorgänge aus irgendeinem Grund verweigert werden, oder wenn das Skript überhaupt nicht ausgeführt wird.

BTW, wo ist die Cron-Registerkarte? Wenn ich Crontab -l als root ausführen, bekomme ich crontab: keine Crontab für root, aber ich weiß, Cron-Jobs laufen. (Ich habe den täglichen Mail-Bericht ausgeführt.)

Alle Vorschläge - auch für die Fehlersuche zu wissen, ob das Skript ausgeführt wird, wäre hilfreich.

Danke.

+0

Wenn Sie das Paket 'Cron' auf pfsense installieren, können Sie die Cronjobs von 'Dienste -> Cron' über die Weboberfläche anzeigen/bearbeiten. – mwfearnley

Antwort

0

Das Problem war, dass Python nicht ausgeführt wurde.

Die sogenannte "portable" shebang, die in der Befehlszeile gearbeitet -

#!/usr/bin/env python2.7 

- FUNKTIONIERT NICHT von cron.

Ich habe die folgende Datei als/home/custom/bin/tcron

#!/usr/bin/env python2.7 
import os 
os.system('/usr/local/bin/minicron') 

Wenn von der Befehlszeile ausführen, den minicron Fehler in das Protokoll jedes Mal legte es ausgeführt wird, aber nichts, wenn Lauf von Cron.

Ich habe #!/Usr/bin/env python2.7 in #!/Usr/local/bin/python2.7 geändert, und jetzt funktioniert es.

Ich weiß nicht, ob dies beabsichtigt ist, dass #!/Usr/bin/env python2.7 funktioniert nicht von Cron, aber für jetzt werde ich mir keine Sorgen machen.

Ich hoffe, indem ich dies dokumentiere, könnte es jemand anderem die gleichen Probleme sparen, und wenn es ein Fehler ist, der gemeldet werden sollte, wird jemand, der weiß, wie man das tut, dies tun.