.procmailrc ファイルから呼び出される Python スクリプトから HTTP 呼び出しを行うときに問題が発生します。それを解決する方法を提案できますか?私はすべてのオプションを使い果たしました。コマンドラインから同じスクリプトを実行すると、HTTP 呼び出しは正常に機能します。詳細は次のとおりです。
.procmailrc の内容: DEFAULT=$HOME/Maildir/ MAILDIR=$HOME/Maildir PMDIR=$HOME/.procmail LOGFILE=/home/prasad/log.'date +%y-%m-%d' SHELL=/bin/バッシュ VERBOSE=YES
:0
| /usr/bin/python /home/prasad/test.py >>/tmp/py_log.txt
また、コマンドラインから実行するとネット接続できます。
test.py の内容:
url="http://server/book"
post_params = {
'foo' : 'bar'
}
params = urllib.urlencode(post_params)
response = urllib2.urlopen(url, params)
print "after urlopen"
json_response = json.loads(response.read())
「response = urllib2.urlopen(url, params)」でハングし、「urlopen 後」の呼び出しで print が表示されません。
編集: procmail が生成するログ ファイルにパーミッション エラーが見つかりました。procmailrc が root 以外のアカウントで実行されています。修正方法は?
procmail: Executing " /usr/bin/python /home/prasad/test.py >>/tmp/py_log.txt"
Traceback (most recent call last):
File "/home/prasad/test.py", line 23, in <module>
response = urllib2.urlopen(url, params)
File "/usr/lib64/python2.6/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib64/python2.6/urllib2.py", line 391, in open
response = self._open(req, data)
File "/usr/lib64/python2.6/urllib2.py", line 409, in _open
'_open', req)
File "/usr/lib64/python2.6/urllib2.py", line 369, in _call_chain
result = func(*args)
File "/usr/lib64/python2.6/urllib2.py", line 1190, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "/usr/lib64/python2.6/urllib2.py", line 1165, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [Errno 13] Permission denied>