# Script sh exécuté par cron qui ne s’exécute pas

**URL:** <https://www.debian-fr.org/t/script-sh-execute-par-cron-qui-ne-s-execute-pas/84303>\
**Category:** Support Debian\
**Created:** [Mars 25, 2021, 9:10 UTC](https://www.debian-fr.org/t/script-sh-execute-par-cron-qui-ne-s-execute-pas/84303 "2021-03-25T09:10:49Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![PhiLinux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/philinux/32/10711_2.png) [@PhiLinux](https://www.debian-fr.org/u/PhiLinux)\
**Post date:** [Mars 25, 2021, 9:10 UTC](https://www.debian-fr.org/t/script-sh-execute-par-cron-qui-ne-s-execute-pas/84303/1 "2021-03-25T09:10:49Z")

</div>

Bonjour à tous (C’est mon 1er post ici !)

Pour supprimer toutes les régles iptable, j’utilise le script `/root/raz-iptable.sh` (voir plus bas).  
En ligne de commande pas de pb mais avec cron cela ne fonctionne pas.

```nohighlight
39 9 * * * root sh /root/raz-iptable.sh

```

`cron.log`:

```nohighlight
Mar 25 09:39:01 ns0000000 CRON[3853]: (root) CMD (root sh /root/raz-iptable.sh)

```

Un `iptables -L` montre que les règles sont toujours actives

`raz-iptable.sh`:

```nohighlight
#!/bin/sh
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

```

Une idée !?  
Merci d’avance  
Philippe

---

<div class="post-metadata">

**Author:** ![lsam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lsam/32/12965_2.png) [@lsam](https://www.debian-fr.org/u/lsam)\
**Post date:** [Mars 25, 2021, 1:30 UTC](https://www.debian-fr.org/t/script-sh-execute-par-cron-qui-ne-s-execute-pas/84303/2 "2021-03-25T13:30:17Z")

</div>

Bonjour,

La commande `root sh /root/raz-iptable.sh` semble erronée. Il faut l’utiliser dans un terminal pour s’en convaincre.  
Lui préférer `sh /root/raz-iptable.sh` ?

---

<div class="post-metadata">

**Author:** ![anon70622873](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/278dde/32.png) [@anon70622873](https://www.debian-fr.org/u/anon70622873)\
**Post date:** [Mars 25, 2021, 1:56 UTC](https://www.debian-fr.org/t/script-sh-execute-par-cron-qui-ne-s-execute-pas/84303/3 "2021-03-25T13:56:25Z")

</div>

Bonjour,

Dans quel fichier est ta tâche cron, et quel est son contenu complet ?

Le truc classique c’est qu’une tâche cron est exécutée dans un shell non connecté et non interactif, et donc **les variables d’environnements ne sont pas renseignées. En particulier PATH**.  
Donc soit tu précises la valeur de PATH dans ton fichier cron :  
` PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin`  
soit tu utilises les emplacements complets des exécutables dans ton script : `/usr/sbin/iptables`

---

<div class="post-metadata">

**Author:** ![PhiLinux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/philinux/32/10711_2.png) [@PhiLinux](https://www.debian-fr.org/u/PhiLinux)\
**Post date:** [Mars 25, 2021, 2:07 UTC](https://www.debian-fr.org/t/script-sh-execute-par-cron-qui-ne-s-execute-pas/84303/4 "2021-03-25T14:07:03Z")

</div>

Bonjour, merci de répondre.

J’ai ajouté «&nbsp;root&nbsp;» pour indiquer/forcer l’utilisateur qui exécute la commande.  
Mais même simplement :  
39 9 \* \* \* sh /root/raz-iptable.sh  
ne fonctionne pas

En lisant différent post sur Internet le pb peut venir du path, j’ai modifié mon script mais pas mieux  
#!/bin/sh  
/sbin/iptables -F  
…

J’ai aussi ajouté à la fin du script, pour voir s’il s’exécute:  
…  
date \>\> /root/ls.txt

mais pas d’évolution de /root/ls.txt

;(  
Ph.

---

<div class="post-metadata">

**Author:** ![PhiLinux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/philinux/32/10711_2.png) [@PhiLinux](https://www.debian-fr.org/u/PhiLinux)\
**Post date:** [Mars 25, 2021, 2:15 UTC](https://www.debian-fr.org/t/script-sh-execute-par-cron-qui-ne-s-execute-pas/84303/5 "2021-03-25T14:15:13Z")

</div>

Bonjour, merci de répondre.

Ayant déjà ajouté /sbin/…  
j’ai complété avec  
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Mais pas mieux !

#!/bin/sh  
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin  
date \>\> /root/ls.txt  
/sbin/iptables -F  
/sbin/iptables -X  
/sbin/iptables -t nat -F  
/sbin/iptables -t nat -X  
/sbin/iptables -t mangle -F  
/sbin/iptables -t mangle -X  
/sbin/iptables -P INPUT ACCEPT  
/sbin/iptables -P FORWARD ACCEPT  
/sbin/iptables -P OUTPUT ACCEPT  
date \>\> /root/ls.txt

Ph.

---

<div class="post-metadata">

**Author:** ![anon70622873](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/278dde/32.png) [@anon70622873](https://www.debian-fr.org/u/anon70622873)\
**Post date:** [Mars 25, 2021, 2:29 UTC](https://www.debian-fr.org/t/script-sh-execute-par-cron-qui-ne-s-execute-pas/84303/6 "2021-03-25T14:29:18Z")

</div>

**Je réitère la question : où est ton fichier cron et quel est son contenu complet ?**

La variable PATH doit être renseignée dans le fichier cron, pas dans le script.

---

<div class="post-metadata">

**Author:** ![PhiLinux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/philinux/32/10711_2.png) [@PhiLinux](https://www.debian-fr.org/u/PhiLinux)\
**Post date:** [Mars 25, 2021, 4:25 UTC](https://www.debian-fr.org/t/script-sh-execute-par-cron-qui-ne-s-execute-pas/84303/7 "2021-03-25T16:25:42Z")

</div>

J’utilise la commande crontab -e (en root)

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin  
16 17 \* \* \* sh /root/raz-iptable.sh  
20 17 \* \* \* sh /root/zs-iptable.sh

Et maintenant ça fonctionne !!

un «&nbsp;watch iptables -L&nbsp;» me montre en temps réel les règles s’activer et se désactiver

Merci a tous pour votre aide  
Ph.
