2016-07-25 7 views
0

pythonスクリプト内でcrontabの内容を使用しようとしています。私はpythonを使ってすべてをやりたい。最後に、crontabの内容をテンポラリ・テキスト・ファイルに変換し、テキスト・ファイルの行を読み込んで操作することを望みます。PythonスクリプトでCrontabを使用する

私はcrontabファイルの内容を使用して、それがテキストファイルであるかのように操作できますか?

私はサブプロセスモジュールに見えたが、これは適切なソリューションである場合には、あまりにもわからない....

注ました:私はどのような方法でのcrontabを編集しようとしているわけではない、私はちょうど午前それを読んで、私のPythonコード内で操作しようとしています。結局、crontabは同じままです。私はちょうど混乱するcrontabの中に含まれている情報が必要です。

+0

これまでに何を試みましたか? [この質問](https://stackoverflow.com/q/31172723/2877364)の回答から、crontabを解析するために使用できるPythonパッケージのリストが表示されます。 – 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は1のcrontabの内容が含まれています。 Python3ではバイナリデータを返しますので、crontab = crontab.decode()が必要です。

+0

これは私が探しているものに非常に近いです。 "crontab -l"コマンドを実行するのではなく、 "crontab -u root -l"を実行したいと思います。サブプロセスコマンドをsubprocess.check_output(['crontab'、 '-u'、 'root'、 ' -l ']))? –

+0

さらに、crontab.decode()は、crontabをテキストファイルのように扱うことができますか? –

関連する問題