2012-04-03 18 views
0

このテストコードでは、XMLファイルをフォルダに保存するだけです。私は毎分実行するようにcrontabジョブをスケジュールしたいと思いましたが、sudoを使用してパスワードを入力すると、XMLをディスクに保存する権限しか得られません。私がcrontabでスケジュールすると、文字列が表示されますが、ファイルは保存されません。どのように私はそれを働かせることができますか?Pythonスクリプトでファイルをディスクに保存する権限

#!/usr/bin/python 

import sys 
import time 
from socket import * 
from xml.dom.minidom import Document 

def main(args): 
     doc  = Document() 
     with open("/Users/lucasp/Desktop/LogsXML" + time.strftime("%Y-%m-%d-%H.%M.%S", time.localtime()) + ".xml", "w") as f: 
      f.write("doc") 
     string = "File saved! : LogsXML/" + time.strftime("%Y-%m-%d-%H.%M.%S", time.localtime()) + ".xml" 
     print string 

if __name__ == '__main__': 
     sys.exit (main (sys.argv)) 
+1

これはコードの問題ではありません。これはシステムの権限の問題です。また、['' os.path.join() ''](http://docs.python.org/library/os.path.html#os.path.join) - 文字列連結を調べることもできますパスは壊れやすい。 –

+0

それをルートのcrontabに入れることができます。しかし、フォルダはあなたのホームディレクトリにあるので、なぜあなたはsudoをする必要がありますか?おそらく、そのフォルダのアクセス権を変更して、アカウントに(chmodまたはFinderを使って)書き込みアクセス権があることを確認する必要があります。 – Dougal

+0

私は誰に許可を与えるべきですか? –

答えて

0

スクリプトを実行する前に、アクセス許可を修正します。uid cronの実行結果(おそらく "crontab")を調べます。 chown(おそらくrootとして)を使用して、ファイルのgidをそのグループに変更し、ファイルへのグループ書き込みアクセスを許可します。例えば、

sudo chown lucasp:crontab ~lucasp/Desktop/LogsXML 
chmod g+w ~lucasp/Desktop/LogsXML 

(スクリプトは、新しいファイルを作成するディレクトリをchownコマンドと書き込みを許可し、chown g+wx <directory>でアクセスを実行する必要がある場合)。

+0

それは私に "chown:crontab:無効な引数"を与えます –

+0

私はそのUIDをどこで見つけるのですか? –

+0

想像力を使ってください。 '/ usr/bin/id>/tmp/all.processes'行をcronスクリプトに置くことができます。 – alexis

関連する問題