J'ai un script qui fonctionne lorsque je l'exécute à partir de la ligne de commande, mais lorsque je le planifie avec des cronerreurs, il ne parvient pas à trouver des fichiers ou des commandes. Ma question est double:
Lorsque je planifie un travail cron avec
crontab -e, utilise -t-il mon ID utilisateur comme base de ses autorisations? Ou utilise-t-il un identifiant d'utilisateur cron d'une certaine sorte et ses autorisations associées?Lorsqu'un travail cron est lancé, quel est le répertoire de travail? Est-ce le répertoire dans lequel je spécifie le script à exécuter ou un autre répertoire?
Voici mon travail cron:
15 7 * * * /home/xxxx/Documents/Scripts/email_ip_script.sh
Voici le script actuel:
vIP_ADDR="`curl automation.whatismyip.com/n09230945.asp`"
echo "$vIP_ADDR"
sed "s/IPADDR/$vIP_ADDR/g" template.txt > emailmsg.txt
ssmtp XXXXX@gmail.com < emailmsg.txt
Voici les erreurs que je reçois lorsque je visualise le mailmessage produit par cron:
sed: can't read template.txt: No such file or directory
/home/xxxx/Documents/Scripts/email_ip_script.sh: line 15: ssmtp: command not found
Il ne peut pas trouver le fichier template.txtmais il réside dans le même répertoire que le script. Il ne peut pas non plus fonctionner ssmtp, mais je peux en tant qu'utilisateur. Qu'est-ce qui me manque pour que cela fonctionne correctement?
cronle sienPATHou puis-je vérifier mon utilisateurPATH? J'ai configuré ssmtp pour avoir le sienuseret l'wheelautorisation, pensant que cela permettrait à quiconque de l'utiliser (y compris cron). Si cela peut aider, je suis sur CENTOS 6.2