2016-07-25 20 views
0

Ich versuche, den Inhalt einer Crontab in einem Python-Skript zu verwenden. Ich möchte alles mit Python machen. Am Ende hoffe ich, den Inhalt der crontab zu übernehmen, in eine temporäre Textdatei umzuwandeln, die Zeilen der Textdatei einzulesen und zu manipulieren.Verwenden von Crontab in einem Python-Skript

Gibt es eine Möglichkeit, den Inhalt der Crontab-Datei zu verwenden und zu manipulieren, als ob es eine Textdatei wäre ???

ich in den Subprozess Modul geschaut haben, aber ich bin nicht sicher, ob dies die richtige Lösung ist ....

HINWEIS: ich versuche nicht die crontab in irgendeiner Weise zu bearbeiten, ich bin gerade Ich versuche es zu lesen und manipuliere es in meinem Python-Code. Am Ende bleibt die Crontab gleich. Ich brauche nur die Informationen, die in der Crontab enthalten sind.

+0

Was haben Sie bisher versucht? Die Antworten auf [diese Frage] (https://stackoverflow.com/q/31172723/2877364) listen einige Python-Pakete auf, die Sie möglicherweise zum Analysieren einer Crontab verwenden können. – cxw

Antwort

2

Wenn Sie crontab -h versuchen würde, die in der Regel die Hilfe-Option, werden Sie diese:

$ crontab -h 
crontab: invalid option -- 'h' 
crontab: usage error: unrecognized option 
Usage: 
crontab [options] file 
crontab [options] 
crontab -n [hostname] 

Options: 
-u <user> define user 
-e   edit user's crontab 
-l   list user's crontab 
-r   delete user's crontab 
-i   prompt before deleting 
-n <host> set host in cluster to run users' crontabs 
-c   get host in cluster to run users' crontabs 
-x <mask> enable debugging 

Default operation is replace, per 1003.2 

Die Linie zu beachten ist derjenige, der -l list user's crontab sagt. Wenn Sie das versuchen, sehen Sie, dass es den Inhalt der eigenen crontab-Datei auflistet. Auf dieser Basis können Sie Folgendes ausführen:

import subprocess 

crontab = subprocess.check_output(['crontab', '-l']) 

Und crontab wird den Inhalt des eigenen crontab enthalten. In Python3 gibt es Binärdaten zurück, so dass Sie crontab = crontab.decode() benötigen.

+0

das ist sehr nah an dem, was ich suche. Sagen wir, anstatt den Befehl "crontab -l" auszuführen, wollte ich "crontab -u root -l" ausführen, würde ich den subprocess-Befehl in subprocess.check_output ändern (['crontab', '-u', 'root', ' -l '])? –

+0

würde Crontab.decode() mir außerdem erlauben, die Crontab zu behandeln, als ob es eine Textdatei wäre? –