Problème Python lors de l'exécution de popen dans cron
Question
J'utilise popen
pour exécuter des commandes dans un script Python, et je l'appelle via cron.
Cron appelle ce script, mais le comportement n'est pas le même si je l'appelle à la main.
Source:
from subprocess import Popen, PIPE
pp = Popen('/usr/bin/which iptables', shell=True, stdout=PIPE)
data = ''
for ln in pp.stdout:
data = data+ln
if data == '':
print 'ko'
else:
print 'ok : '+data
À la main:
# python /home/user/test.py
> : /sbin/iptables
Par cron (dans / tmp / err_cron):
* * * * * /usr/bin/python /home/user/test.py >> /tmp/err_cron
ko
ko
ko
Pourquoi cron n'exécute-t-il pas ce script normalement?
La solution
Normalement, lorsque les processus sont exécutés à partir de cron, le PATH
est défini sur une valeur très restrictive (la page de manuel de ma crontab indique / usr / bin: / bin
). . Vous devrez peut-être ajouter:
PATH=/usr/bin:/bin:/sbin
en haut de votre fichier crontab.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow