/etc/init.d

Résolu
Hello,
J'ai crée un fichier firewall.sh. Je ne parviens pas a le lancer apres des modifications par la commande
/etc/init.d/firewall.sh
J'ai ubuntu 6.10.
Où est le probleme???

16 réponses

  1. Modérateur
    Salut,

    affiche
    ls -l /etc/init.d/firewall.sh
    sinon tu parles de lancement de ton script au démarrage de ton système?

    Si oui tu as 2 possibilités

    - avec rc.local
    - avec un script de demarrage qui te permettra aussi de l'arrêter ou démarrer manuellement comme on fait avec les daemons
    1. Modérateur
      Ok, tu as de la chance :-)

      1. avec rc.local


      dans le fichier rc.local tu ajoutes le chemin vers ton script

      /chemin/vers/firewall.sh


      Si tu utilises la 2ème possibilité tu n'as pas besoin de rc.local


      2. avec un script de démarrage dans /etc/init.d


      tu crées 2 fichiers dans /etc

      iptables_start
      iptables_stop


      et un script de démarrage dans /etc/init.d que tu peux l'appeller

      iptables

      Pas besoin d'extension .sh

      le fichier /etc/iptables_start contiendra ce que tu as en firewall.sh

      le fichier /etc/iptables_stop c'est pour la désactivation du firewall (des fois on a besoin pour certains tests)
      et il contiendra
      #! /bin/sh
      #
      # Description: désactivation du firewall netfilter/iptables
      #
      # table FILTER
      #
      iptables -F
      iptables -X
      iptables -P INPUT   ACCEPT 
      iptables -P OUTPUT  ACCEPT
      iptables -P FORWARD ACCEPT 
      
      # la table NAT
      #
      iptables -t nat -F
      iptables -t nat -X
      iptables -t nat -P PREROUTING    ACCEPT
      iptables -t nat -P POSTROUTING   ACCEPT
      iptables -t nat -P OUTPUT        ACCEPT
      #
      # la table MANGLE
      #
      iptables -t mangle -F
      iptables -t mangle -X
      iptables -t mangle -P PREROUTING    ACCEPT
      iptables -t mangle -P INPUT         ACCEPT
      iptables -t mangle -P OUTPUT        ACCEPT
      iptables -t mangle -P FORWARD       ACCEPT
      iptables -t mangle -P POSTROUTING   ACCEPT
      
      

      Le script /etc/init.d/iptables
      #!/bin/sh
      
      case $1 in
      'start' )
      	/etc/iptables_start
      	;;
      'stop'	)
      	/etc/iptables_stop
      	;;
      *)
      	echo "usage: -bash {start|stop}"
      	;;
      esac
      

      Ensuite établi les droits
      chmod -v 0700 /etc/iptables_st*
      chmod -v 0700 /etc/init.d/iptables
      Et tu crées les liens
      update-rc.d -f start 99 2 3 4 5 iptables .


      Au démarrage dans le runlevel 2,3,4,5 le firewall sera en état de fonction

      Tu peux desactivé le firewall avec
      /etc/init.d/iptables stop

      Si tu fait des modifications tu peux le rélancer avec
      /etc/init.d/iptables start
      Si tu tapes
      /etc/init.d/iptables
      tu auras le message usage: -bash {start|stop}

      Attention!!!

      c'est un script minimal qui normalement dans ton cas doit faire l'affaire
      1. Bonsoir
        Mon firewall.sh se lance bien lorsque je boot la machine mais je parviens tj pas a le relancer via /etc/init.d/firewall.sh stop ou start c'est selon. Je dois tj rebooter la machine
        Merci
    2. Modérateur
      Re,

      je vais sortir, donc au cas où je te laisse la commande (toutefois tu pouvais regarder dans man update-rc.d )
      update-rc.d -f iptables start 99 2 3 4 5 .
      --
      lami20j
      1. debian:/mnt/hdb5/ogg# find /etc/ -name 'iptables*'

        bash: debian:/mnt/hdb5/ogg#: Aucun fichier ou répertoire de ce type

        update-rc.d -f iptables start 99 2 3 4 5 .

        Adding system startup for /etc/init.d/iptables ...
        /etc/rc2.d/S99iptables -> ../init.d/iptables
        /etc/rc3.d/S99iptables -> ../init.d/iptables
        /etc/rc4.d/S99iptables -> ../init.d/iptables
        /etc/rc5.d/S99iptables -> ../init.d/iptables
    3. Modérateur
      Ecoute, il faut lire attentivement mes messages (surtout 16)

      maintenant tu as créé les liens vers /etc/init.d/iptables (d'ailleurs je ne comprends pas debian:/mnt/hdb5/ogg# find /etc/ -name 'iptables*'

      bash: debian:/mnt/hdb5/ogg#: Aucun fichier ou répertoire de ce type
      )

      affiche
       ls -l /etc/iptables_st{art,op}

      essaie manuellement
       /etc/init.d/iptables
      /etc/init.d/iptables start
      iptables -v -L
      /etc/init.d/iptables stop
      iptables -v -L
      tu n'as qu'à suivre mes messages pas à pas
      1. Bonsoir ou bonjour lami,
        J'ai suivi pas a pas ce que tu m'as dit et tout fonctionne impecablement.
        Merci bien pour ton aide.
        Super genial et en plus tu m'as appris quelque chose.
        Bon week end
    4. hello,
      J'ai deja fait ça mais il me marque aucun 'fichier de ce type'.
      Pour info, au lancement mon script firewall se lance bien

      ls -l /etc/init.d/firewall.sh
      Aucun fichier ou répertoire de ce type

      Voila là réponse
      merci
      1. Modérateur
        Alors tu dois commencer par me dire où se trouve ton fichier.
        1. /home/gerard/scripts
      2. Modérateur
        Donc que veux tu faire?

        que ton script s'exécute au démarrage de système?
        que tu puisse contrôler le démarrage et la désactivation?
        les 2?
        Et j'ai besoin d'une info puisque Ubuntu je ne connais pas trop :-)
        Il y a le fichier /etc/init.d/rc.local sous Ubuntu?

        1. Modérateur
          Salut,

          je dois partir maintenant.
          Réponds à mes questions s'il te plaît. Merci.
          Si jamais tu ne trouves pas d'aide et si tu peux attendre jusqu'à demain je vais te donner dans les 2 cas que j'ai mentionné la solution détaillée.
          1. coucou,
            oui, il y a un rc.local et mon script se lance au demarrage. J'aimerais seulement le relancer apres avoir fait quelques modifications style..

            /etc/init.d/firewall.sh start mais ça ne fonctionne pas il me repond qu'il est inexistant voilà... et pourtant il est bien là

            A ta question j'aimerais pouvoir controler les 2.
            Merci à toi et passe une bonne soirée.
            A bientot
            1. Modérateur
              Salut,

              ast-tu suivi mon message?
              si tu ne me dit pas ce que tu fait je ne peux pas savoir.
              le fait que tu me dit seulement que ça ne marche pas, ne m'est d'aucun aide

              as tu créé le script de démarrage?
              as-tu créé les scripts /etc/iptables_start et /etc/iptables_stop?
              1. Alors voilà, j'ai edité un fichier iptables qui se nomme firewall.sh qui se trouve dans le chemin /home/gerard/scripts.
                Dans rc.local j'ai mis le chemin et ça fonctionne car il se lance au demarage de la machine. Toutefois j'aimerais relancer mon fitrewall.sh apres certaines modifications que jafais sans relancer la machine et via la commande /etc/init.d/firewall.Sh restart.... voila

                Merci pour ton dévouement
            2. Modérateur
              Donc soit tu n'as pas lu mon message, soit tu n'as pas compris.

              On laisse tomber rc.local, donc enleve la ligne qui démarre ton script ou mets un # pour la commenté dans rc.local

              ensuite regarde mon message 8 à partir de 2. avec un script de démarrage dans /etc/init.d

              tu n'as qu'à respecter pas à pas

              Garde ton fichier firewall.sh dans le répertoire home/gerard/scripts. et on ne parle plus de lui

              On va parler de
              /etc/iptables_start
              /etc/iptables_stop
              /etc/init.d/iptables

              ce n'est parce que je t'impose de nommer les fichiers ainsi, mais seulement pour se comprendre, et une fois que tu as compris tu ferras ce que tu veux

              Et dans ton cas, pour t'expliquer un peu
              tu ne peux pas faire /etc/init.d/firewall.sh stop puisque le script firewall.sh n'est pas conçu pour ça

              Pour obtenir /etc/iptables_start tu peux taper en root
              mv /etc/init.d/firewall.sh /etc
              1. mv: ne peut évaluer `/etc/init.d/firewall.sh': Aucun fichier ou répertoire de ce type
                1. Modérateur
                  Il me semble qu'on a melangé tout.
                  c'est toi qui dit

                  Toutefois j'aimerais relancer mon fitrewall.sh apres certaines modifications que jafais sans relancer la machine et via la commande /etc/init.d/firewall.Sh restart.... voila

                  et maintenant tu me dit que le fichier n'existe pas

                  je ne comprends rien du tout

                  tape en root updatedb
                  ensuite affiche
                  locate rc.local
                  locate firewall.sh 
                  Ce que je ne comprends pas, c'est que si tu suis pas à pas mon message 8 tu dois t'en sortir.
                  1. Ok lami tu a raison,
                    Lorsque j'ecris 'updatedb ' il ne me dit rien.

                    locate rc.local
                    /etc/init.d/rc.local
                    /etc/rc2.d/S99rc.local
                    /etc/rc3.d/S99rc.local
                    /etc/rc4.d/S99rc.local
                    /etc/rc5.d/S99rc.local
                    /etc/rc.local
                    /etc/rc.local~

                    locate firewall.sh
                    /home/gerard/scripts/firewall.sh
                    /home/gerard/scripts/firewall.sh~
                2. Modérateur
                  Salut,

                  en root

                  cat  /home/gerard/scripts/firewall.sh > /etc/iptables_start
                  ici tu trouve le script iptables_stop que tu dois le sauvegarder dans /etc
                  ici tu trouves le script iptables que tu dois le sauvegarder dans /etc/init.d

                  Ensuite établi les droits
                  chmod -v 0700 /etc/iptables_st*
                  chmod -v 0700 /etc/init.d/iptables
                  Et tu crées les liens
                  update-rc.d -f start 99 2 3 4 5 iptables .
                  Et affiche
                  tail /etc/rc.local
                  tail /etc/initd/rc.local
                  locate rc.local | while read i;do ls -l $i;done 2>/dev/null
                  1. Voila Lami, j'ai tout ce que tu m'as dit m'est lorsque je fait

                    update-rc.d -f start 99 2 3 4 5 iptables .

                    Voila ce qu'il me repond

                    update-rc.d: /etc/init.d/start: file does not exist

                    SNIFFFF
                3. Modérateur
                  Hello,

                  c'est ma faute :-)) j'ai fait une erreur, mais ce n'est pas grave :-))
                  avant de te donner la bonne commande

                  affiche s'il te plaît
                  debian:/mnt/hdb5/ogg# find /etc/ -name 'iptables*'
                  /etc/init.d/iptables
                  /etc/iptables_start
                  /etc/iptables_stop
                  
                  j'espère que tu obtiendrai le même resultat :-))
                  1. Modérateur
                    Salut,

                    je suis content que tu as réussi :-))

                    Bon week-end à toi.