Lancement Firewall.sh au reboot

Bonjour,

J’ai un script nommé Firewall.sh (avec dedans de quoi faire mes iptables), et il ne se lance pas automatiquement au reboot malgré que j’ai bien mis une crontab au redémarrage avez vous une idée ?

Si vous avez besoin d’infos je reste à disposition,

Cordialement,

Had3s99

Pas d’idée mais trois questions :

  1. Le script s’exécute-t-il correctement quand il est lancé manuellement ?
  2. Comment as-tu créé la crontab pour l’exécuter au démarrage ?
  3. Comment vois-tu qu’il ne se lance pas au démarrage ?

Salut,

  1. Soit le lance avec sh /chemin/firewall.sh ou /chemin/firewall.sh
  2. @reboot sh /chemin/firewall.sh
  3. Mes règles d’iptables ne sont pas listés quand je fais iptables -L et certaines actions que j’ai bloqué ne le sont pas … :frowning:

Bonjour,

Il faut montrer ta tâche cron. C’est souvent un problème de PATH qui n’est pas défini.

Dans quelle crontab ? La crontab de root, la crontab système (/etc/crontab) ?

Ça ne prouve pas que le script n’est pas lancé. Seulement que les règles iptables ne sont pas créées.

Actions ?

Elle est dans son second message. Tu voulais peut-être dire la crontab entière ?

Typiquement iptables est appelé sans le chemin complet /sbin ou /usr/sbin selon la version qui ne figure pas dans le $PATH par défaut de cron.

Oui je n’étais sans doute pas assez précis. Par « montrer la tâche cron » j’entends tout ce qui définit cette tâche : le fichier utilisé, éventuellement la commande pour le créer, son emplacement et son contenu complet.

Hellow,

Alors moi je fais :

crontab -e

Ou j’ai mis :

@reboot sh /chemin/firewall.sh

Je voulais dire les iptables pour bloquer x port ou autre par exemple :X

Et là tu m’as perdu par contre x)

Merci de m’accorder de votre temps ! ^^

En tant que root je suppose ?

Ajoute le PATH dans ton fichier :

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

@reboot sh /chemin/firewall.sh

En tant que quel utilisateur ?

Donc sans spécifier PATH. Ton script, il spécifie le chemin complet pour les commandes ou pas ?
$PATH est la variable d’environnement qui contient les chemins dans lequels le shell va chercher les programmes qu’on lui fait lancer sans spécifier le chemin. Exemple :
iptables -> va chercher avec $PATH
/sbin/iptables -> ne va pas chercher avec $PATH
Or d’après la page de manuel de crontab(5), le PATH par défaut ne contient que /bin et /usr/bin, mais pas /sbin ou /usr/sbin où se trouve iptables.

Salut,

Oui en session Root

Je cale le PATH dans crontab ou alors dans mon firewall.sh ?

Je vois mieux pourquoi déjà ça bloquait j’utilisais du sbin mais comme j’ai dit juste au dessus savoir si je mets le PATH dans crontab -e ou dans mon sh

merci encore !

Dans le fihcier crontab.
Il est toujours utile de lire les pages de man quand on a des doutes sur le fonctionnment de certaines commandes ou services, en l’occurrence : man 5 crontab

Ah j’avais pas installer le manuel mais j’avais jamais penser à ça en vrai mais merci de l’info,

Je viens de mettre en place le tout ça devrait être bon je pense ^^