Partage
  • Partager sur Facebook
  • Partager sur Twitter

Raspbian et script de démarrage... Grrrrrr

Raspberry Pi PiHomeDashScreen

    11 octobre 2017 à 21:08:24

    Salut à tous,

    J'ai Raspbian 9 (Stretch) fraîchement installé.

    Je souhaite exécuter des script au démarrage :

    J'ai créé deux fichiers dans /etc/init.d/ :

    xplanet.sh :

    #!/bin/sh
    
    # TERRE
    xplanet -conf /var/www/xplanet/xplanet.conf -output /var/www/xplanet/img/xplanet_earth.png -wait 120 -body earth -latitude 40 -longitude 10 -geometry 500x500 &
    
    # LUNE
    xplanet -conf /var/www/xplanet/xplanet.conf -output /var/www/xplanet/img/xplanet_moon.png -wait 600 -body moon -geometry 250x250 &

    &&

    nc_ifstat_srv.sh :

    #!/bin/bash
    
    dst_port=12345
    dst_dir=/home/pi/ifstat
    dst_file=eth0.log
    
    nc -u -l 12345 >> $dst_dir/$dst_file&

    Ensuite chmod 755 sur ces deux fichiers.

    Puis un joli update-rc.d mes2scripts.sh defaults

    Je reboot, ça ne marche pas (ps pour voir).

    Je lance ./etc/inidt.d/mes2scripts et chacun fonctionne.

    J'ai fait un fichier dans mon répertoir user :

    dashscreen.sh :

    #!/bin/sh
    sh /etc/init.d/nc_ifstat_srv.sh
    sh /etc/init.d/xplanet.sh

    Si je le lance au démarrage manuellement, les deux fichiers ce lancent.

    J'ai tourné en bourrique, du coup j'ai modifié le /etc/rc.local, pour y mettre :

    #!/bin/sh -e
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.
    
    # Print the IP address
    _IP=$(hostname -I) || true
    if [ "$_IP" ]; then
      printf "My IP address is %s\n" "$_IP"
    fi
    
    sh "/home/pi/dashscreen.sh" &
    
    exit 0

    (J'ai mis que la dernière ligne).

    Et au démarrage..... CA MARCHE PAAAAAAAAASSSSS !!!

    Je tourne en rond :( Et si je fais un "/etc/rc.local" le script s'exécute.. .WTF ! x)

    J'ai vérifié le boot.log, l'adresse IP s'affiche bien mais pas mon script !! :D

    Une idée de Génie ?

    Merci.

    Sigri44

    -
    Edité par sigri44 11 octobre 2017 à 21:08:52

    • Partager sur Facebook
    • Partager sur Twitter

    Webmaster - https://sigri44.com

      11 octobre 2017 à 21:40:26

      salut,

      xplanet est un programme X, qui ne démarrera pas avant que X soit lui-même démarré.

      il faut séparer la commande de la mise en arrière-plan. (est-elle d'ailleurs bien nécessaire ?)

      les scripts init.d nécessitent des en-têtes LSB(?). (je ne sais pas trop, je n'ai pas fait beaucoup de scripts sysVinit).

      enfin, si un script est exécutable, et comporte un shebang, il est inutile de le faire précéder par sh.

      • Partager sur Facebook
      • Partager sur Twitter

      Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

        11 octobre 2017 à 21:44:34

        Yop !

        Je sais pas trop pour le programme (oui ça en est un, mais comment il fonctionne..) toujours est il que si je lance le script à la mano ça fonctionne, que je n'ai pas de serveur graphique (version Lite, en CLI ;)) et que tout marche manuellement, c'est vraiment que l'execution du script au démarrage qui marche pas tout seul. Malgré toutes les méthodes essayée et en simultanées...

        Les scripts non, mais les services oui. J'ai fait un service qui regroupe tout ça, même topo. Au boot rien ne marche, si je fais un service xxxx start par contre niquel x)

        Y'a sh et bash donc j'ai préféré spécifier, j'ai appris comme ça :p

        • Partager sur Facebook
        • Partager sur Twitter

        Webmaster - https://sigri44.com

          11 octobre 2017 à 23:16:03

          Regarde les autres scripts dans /etc/init.d/ et tu verras qu'il te manque un entête à ton script.

          ### BEGIN INIT INFO
          # Provides:          FOO
          # Required-Start:    $syslog $remote_fs
          # Required-Stop:     $syslog $remote_fs
          # Default-Start:     3 5
          # Default-Stop:      0 1 2 6
          # Description:       Start FOO to allow XY and provide YZ
          ### END INIT INFO

          Provides :          Nom de ton service

          Required-Start: Voir le lien

          Required-Stop: Voir le lien

          Default-Start:    start runlevel [1,2,3,..6]

          Default-Stop:    stop runlevel [1,2,3,..6]

          Description:      Description de ton service

          Lien : https://wiki.debian.org/LSBInitScripts

          Et pour info, si je me rappel bien /etc/rc.local est en faite un service dans /etc/init.d qui éxécute le fichier /etc/rc.local donc tu dois pouvoir retrouver le service qui lance /etc/rc.local et t'en inspirer pour créer ton service.

          Et systemctl fait pareil mais en mieux ^^

          -
          Edité par DaveStane 11 octobre 2017 à 23:41:16

          • Partager sur Facebook
          • Partager sur Twitter
          Si jamais je fais une/des faute(s) n'hésitez pas à me le dire... Thanks and have a nice day
            12 octobre 2017 à 10:23:31

            DaveStane a écrit:

            Regarde les autres scripts dans /etc/init.d/ et tu verras qu'il te manque un entête à ton script.

            ### BEGIN INIT INFO
            # Provides:          FOO
            # Required-Start:    $syslog $remote_fs
            # Required-Stop:     $syslog $remote_fs
            # Default-Start:     3 5
            # Default-Stop:      0 1 2 6
            # Description:       Start FOO to allow XY and provide YZ
            ### END INIT INFO

            Provides :          Nom de ton service

            Required-Start: Voir le lien

            Required-Stop: Voir le lien

            Default-Start:    start runlevel [1,2,3,..6]

            Default-Stop:    stop runlevel [1,2,3,..6]

            Description:      Description de ton service

            Lien : https://wiki.debian.org/LSBInitScripts

            Et pour info, si je me rappel bien /etc/rc.local est en faite un service dans /etc/init.d qui éxécute le fichier /etc/rc.local donc tu dois pouvoir retrouver le service qui lance /etc/rc.local et t'en inspirer pour créer ton service.

            Et systemctl fait pareil mais en mieux ^^

            -
            Edité par DaveStane il y a environ 10 heures


            Non comme je l'ai dit, les scripts (.sh) n'ont aucune entête, même ceux du RPi (raspi-config.sh, keyborad.sh), ce sont juste des scripts.

            Par contre les services (sans extensions) oui, ils ont l'entête ! Mais comme écrit, j'ai aussi fait un service avec en tête, et ça ne marche pas non plus ;)

            Mais ce raspi déconne, il est fraichement installé et ce mets en veille toute les minutes, malgré l'empêchement dans crontab x)

            • Partager sur Facebook
            • Partager sur Twitter

            Webmaster - https://sigri44.com

              12 octobre 2017 à 17:20:41

              Les services sans extension?
              Sur Linux tu peux appeler ton script windows.exe ou script.bat même jesuisunpdf.pdf ça ne change rien.
              Peut-on voir la configuration de ton fichier dans /etc/init.d . stp
              Au pire essaye ça:
              1) créer le /etc/init.d/test.sh comme ci-dessous:
              2) puis exécutes les commandes suivantes:
              root@debian~# cat /etc/init.d/test.sh
              
              #!/bin/sh
              ### BEGIN INIT INFO
              # Provides:          test
              # Required-Start:    $remote_fs
              # Required-Stop:
              # Should-Start:      
              # Default-Start:     3 5
              # Default-Stop:      2 4 6   
              # Short-Description: Mon super test (dicté par un dieu)
              ### END INIT INFO
              
              touch /root/test
              
              exit0
              root@debian~# chmod 755 /etc/init.d/test.sh
              root@debian~# uptdate-rc.d test.sh defaults
              root@debian~# reboot
              root@debian~# service test status



              Bien entendu si tu as des messages d'erreurs postes les.

              -
              Edité par DaveStane 12 octobre 2017 à 20:01:55

              • Partager sur Facebook
              • Partager sur Twitter
              Si jamais je fais une/des faute(s) n'hésitez pas à me le dire... Thanks and have a nice day
                12 octobre 2017 à 19:07:54

                DaveStane a écrit:

                Les services sans extension?
                Sur Linux tu peux appeler ton script windows.exe ou script.bat même jesuisunpdf.pdf ça ne change rien.
                Peut-on voir la configuration de ton fichier dans /etc/init.d . stp
                Au pire essaye ça:
                1) créer le /etc/init.d/test.sh comme ci-dessous:
                2) puis exécutes les commandes suivantes:

                root@debian~# cat /etc/init.d/test.sh
                
                #!/bin/sh
                ### BEGIN INIT INFO
                # Provides:          test
                # Required-Start:    $remote_fs
                # Required-Stop:
                # Should-Start:      
                # Default-Start:     3 5
                # Default-Stop:      2 4 6   
                # Short-Description: Mon super test (dicté par un dieu)
                ### END INIT INFO
                
                touch /root/test
                
                exit0

                root@debian~# chmod 755 /etc/init.d/test.sh
                root@debian~# uptdate-rc.d test.sh defaults
                root@debian~# reboot
                root@debian~# service test status

                Bien entendu si tu as des messages d'erreurs postes les.

                -
                Edité par DaveStane il y a 8 minutes

                J'ai déjà testé une manip comme ça, j'ai refait dans le doute avec le tient, et le fichier ne ce créé pas ! Par contre si je lance le service le fichier apparait ;)

                • Partager sur Facebook
                • Partager sur Twitter

                Webmaster - https://sigri44.com

                  12 octobre 2017 à 19:58:49

                  Qu'elle est le retour de la commande :

                  service test status

                   service --status-all

                  [EDIT] J'ai remit en page mon code sur mon poste précédant

                  -
                  Edité par DaveStane 12 octobre 2017 à 20:04:17

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Si jamais je fais une/des faute(s) n'hésitez pas à me le dire... Thanks and have a nice day
                    17 octobre 2017 à 0:13:08

                    DaveStane a écrit:

                    Qu'elle est le retour de la commande :

                    service test status

                     service --status-all

                    [EDIT] J'ai remit en page mon code sur mon poste précédant

                    -
                    Edité par DaveStane 12 octobre 2017 à 20:04:17

                    Unrecognized service

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Webmaster - https://sigri44.com

                      17 octobre 2017 à 14:33:27

                      La commande "service --status-all" te donne Unrecognized service ???

                      Soit un peu plus verbeux s'il te plait. Et refais https://openclassrooms.com/forum/sujet/raspbian-et-script-de-demarrage-grrrrrr#message-92014419 car il y a surement une erreur dans ta façon de faire. Et bien entendu donne nous toutes les commandes que tu fais avec les retours.

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Si jamais je fais une/des faute(s) n'hésitez pas à me le dire... Thanks and have a nice day
                        18 octobre 2017 à 9:49:36

                        DaveStane a écrit:

                        La commande "service --status-all" te donne Unrecognized service ???

                        Soit un peu plus verbeux s'il te plait. Et refais https://openclassrooms.com/forum/sujet/raspbian-et-script-de-demarrage-grrrrrr#message-92014419 car il y a surement une erreur dans ta façon de faire. Et bien entendu donne nous toutes les commandes que tu fais avec les retours.


                        Non moi je crois surtout vu tous les forums que le Raspbian Stretch ne ce sert plus d'init.d car tout à changé, et c'est là que je bloque ;)

                        J'ai réinstallé, j'ai fait des copié collé de script, rien ne marche.

                        Mais un service ssh restart marche niquel

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Webmaster - https://sigri44.com

                          19 octobre 2017 à 16:16:31

                          Effectivement init.d devient obselète, et maintenant c'est systemctl qui est majoritairement utilisé, cependant pour faire mes tests j'ai utilisé debian 9 et init.d était bien fonctionnel sachant que pourquoi service ssh restart fonctionnerais et pas ton service ? Mais je commence un peu à en avoir marre de te demander les retours de tes actions.

                          -
                          Edité par DaveStane 19 octobre 2017 à 16:17:26

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Si jamais je fais une/des faute(s) n'hésitez pas à me le dire... Thanks and have a nice day

                          Raspbian et script de démarrage... Grrrrrr

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown