2016-07-25 2 views
0

Я пытаюсь использовать содержимое crontab внутри скрипта python. Я хочу делать все с помощью python. В конце концов, я надеюсь взять содержимое crontab, преобразовать его во временный текстовый файл, прочитать строки текстового файла и манипулировать им.Использование Crontab в скрипте Python

Есть ли способ, которым я могу использовать содержимое файла crontab и манипулировать им, как если бы это был текстовый файл ???

Я посмотрел в модуль подпроцесса, но я не слишком уверен, что это правильное решение ....

Примечание: Я не пытаюсь редактировать кронтаб в любом случае, я просто пытаясь прочитать его и манипулировать им в моем коде python. В конце концов, crontab останется прежним. Мне просто нужна информация, содержащаяся внутри crontab.

+0

Что вы пробовали? В ответах на [этот вопрос] (https://stackoverflow.com/q/31172723/2877364) перечислены некоторые пакеты Python, которые вы могли бы использовать для синтаксического анализа crontab. – cxw

ответ

2

Если бы вы попробовали crontab -h, которые, как правило, вариант помощи, вы получите это:

$ 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 

Линия отметить это тот, который говорит -l list user's crontab. Если вы попробуете это, вы увидите, что в нем указано содержимое своего crontab-файла. Исходя из этого, можно выполнить следующие действия:

import subprocess 

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

И crontab будет содержать содержимое своего кронтаб. В Python3 он вернет двоичные данные, поэтому вам понадобится crontab = crontab.decode().

+0

Это очень близко к тому, что я ищу. Скажем, вместо запуска команды «crontab -l» я хотел запустить «crontab -u root -l», если бы я изменил команду подпроцесса на subprocess.check_output (['crontab', '-u', 'root', ' -l '])? –

+0

Кроме того, мог бы crontab.decode() разрешить мне рассматривать crontab, как если бы это был текстовый файл? –

Смежные вопросы