Lancement automatique d’un script au démarrage

Bonjour du samedi soir,

*** (article non relu et juste tapé « au km » pour le moment) ***

Vous voulez rire ?
Cet article fait écho à une remarque sur un forum 🙂

Une personne demandant de l’aide déplorait l’absence de tutoriels clairs pour réaliser le lancement automatique d’un script au démarrage de son Raspberry Pi.
Et il est vrai que des modifications des systèmes rendent certaines solutions caduques.

Je vais donc réaliser un petit tutoriel à toutes fins utiles.
Il est éprouvé pour Raspbian Stretch (donc valable pour les systèmes basés sur la version 9 de Debian dont le nom de code est « Stretch »).

En fait, je connais 2 façons de lancer automatiquement un script (bash ou python) ou une application au démarrage d’un système Linux.

  1. Lancement automatique d’un script lors du démarrage de l’interface graphique
  2. Lancement automatique d’un script lors du démarrage « initial » du Raspberry

Cet article ou tutoriel sera donc relativement rapide.

1 – Lancement automatique d’un script lors du démarrage de l’interface graphique

On part du principe que le script sera dans le dossier pi.

Création du script avec sudo nano /home/pi/script.py pour un code en python ou sudo nano /home/pi/script.sh pour un code en bash.

On applique les droits avec sudo chmod +x /home/pi/script.py

Ensuite, on édite le système de démarrage de l’interface graphique avec sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

puis on ajoute la ligne pour lancer le script (ça permet, par exemple, de charger un script pour transformer le Raspberry en Photomaton)

@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
python3 /home/pi/script.py
point-rpi

Ou cette ligne pour lancer le script dans un terminal (ça permet, par exemple, de charger un script pour transformer le Raspberry en lecteur/exécuteur de QR codes)

@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@lxterminal --command="./script.sh"
point-rpi

Note : Remplacez @lxterminal --command="./script.sh par @lxterminal -e /usr/bin/python3.5 /home/pi/script.py pour lancer un script python au sein même d’un terminal.

ou celle-ci pour lancer un service voulu (un exemple parmi d’autres ; là, on lance automatiquement une vidéo en mode fenêtré avec VLC)

@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@vlc /home/pi/Videos/film.mp4
point-rpi

Note : Remplacez @vlc /home/pi/Videos/film.mp4 par omxplayer -b /home/pi/dossier-voulu/film-a-lire.mkv pour lancer lire la vidéo en plein écran avec omxplayer.

ou … (à vous de laisser parler votre créativité)

Pour vérifier si tout se passe bien, pas besoin de faire un redémarrage ; un simple « logout » suivi d’une reconnexion suffit

2 – Lancement automatique d’un script lors du démarrage « initial » du Raspberry

Si on fonctionne en mode console, on automatise l’action en chargeant un script même sans interface graphique
Donc on doit réaliser l’édition de rc.local avec sudo nano /etc/rc.local

On y insère sudo python3 /home/pi/script.py& ou sudo python /home/pi/script.py& (selon la version de python) juste avant la ligne # Print the IP address

Le fichier sera donc :

#!/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.
sudo python3 /home/pi/script.py&
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

exit 0

Évidemment, comme précédemment, on a créé le script avec sudo nano /home/pi/script.py.
Et appliqué les droits avec sudo chmod +x /home/pi/script.py

Et voilà,
Vous avez donc 2 solutions pour lancer un script ou un service ou une application de manière simple et automatique au démarrage du Raspberry Pi.
Soit dès le démarrage du Raspberry Pi en lui-même (en mode console)
Soit seulement après le lancement de l’interface graphique.

Bien sûr, vous pouvez utiliser les 2 solutions et ainsi avoir une action constante (lancé si le Rpi est démarré) et une seconde, en plus, uniquement une fois que l’interface graphique est activée.
C’est la solution que j’ai choisie pour l’automatisation de mon Raspberry faisant office de Photomaton :
Dès le démarrage, mon script python gérant les bouton de « Shutdown » et « reboot » est fonctionnel.
Mais, la fonction « PhotoBooth » n’est vraie que si l’interface graphique est lancée.
Pourquoi ?
Parce que j’ai désactivé l’autodémarrage et créé un 2ème utilisateur pour pouvoir utiliser le Rpi comme je l’entends.
Sans blague … C’est qui le chef ?!?!?

Bon, ben, maintenant, faut y aller, c’est bon, j’ai terminé ; à vous de faire !

A propos de Alban

Papa de 4 enfants étant lui-même resté un enfant. Diététicien-Nutritionniste tombé par obligation dans l'informatique à 22 ans pour le boulot et s'étant "un peu" pris au jeu ... Pas un génie de l'informatique (loin de là), mais intéressé et carrément orienté Linux et entraide. Lassé de l'évolution du Monde de la Santé dans lequel les patients sont de plus en plus à traiter comme des clients (je suis un soignant !!!), j'ai opté pour une reconversion en repartant en Alternance... à... 44 ans D'abord dans le cadre d'un BTS SIO option SISR (Solutions d’Infrastructure, Systèmes et Réseaux) en Septembre 2019. Après l’obtention du BTS, j'ai décidé de poursuivre (toujours en alternance) en Bac+3 avec un Bachelor Concepteur de Systèmes d'Information. Depuis septembre 2022, je suis donc encore plus vieux, mais un jeune diplômé "Administrateur Systèmes et Réseaux". Citation personnelle : « Si la réussite facile flatte l’égo, C’est de la persévérance que nait le plaisir de la réussite. »

61 commentaires à propos de “Lancement automatique d’un script au démarrage”

  1. Bonjour, Papi Jean 76, je débute avec Debian Buster et Domoticz, mon systême domotique fonctionne, Volets, alarme, cameras, etc … mais impossible de déclencher un envoi de mail si Debian redémarre. Grace à vous j’ai réussi … ça n’a pas marché avec le « module » : rc.local , mais j’y suis arrivé avec le module « autostart » … c’est bien grâce à vous et je vous en remercie grandement. je reçois donc un mail si mon Debian Buster redémarre …
    waouuuu ! c’est super ! … c’est mon cadeau de noël … par ailleurs, mon « Domoticz » s’arrête régulièrement ? … j’ai donc « trouvé » un script qui le fait repartir … ça marche … mais j’aurais aimé recevoir un mail … et cela je n’ai pas encore réussi à le faire … je cherche … 🙂
    Encore merci et bonne année à tous …

    • Hello JeanPap,

      Merci pour ce message 🙂
      Pour le

      j’ai donc “trouvé” un script qui le fait repartir … ça marche … mais j’aurais aimé recevoir un mail … et cela je n’ai pas encore réussi à le faire … je cherche …

      Il faudrait essayer de paramétrer un crontab qui lance un courriel à chaque reboot 😉
      Un coup de crontab -e puis on insère une ligne de type @reboot bash /home/pi/script-reboot.sh
      Faudra me redire si ça fonctionne !

      Encore merci pour ce sympathique message qui donne le sourire,
      Et Meilleurs Vœux pour 2021 !

      • Monsieur Alban, rebonjour, et merci pour votre aide si précieuse, je vais essayer de voir votre procédure. d’une façon ou d’une autre, j’arriverai peut-être à mes fins … ce n’est pas facile mais c’est plaisant … quand ça marche ! … 🙂 … A+ probablement … 🙂

        • Oups,

          En relisant, je vois que le souci est en cas de relance de domoticz.
          « par ailleurs, mon “Domoticz” s’arrête régulièrement ? … j’ai donc “trouvé” un script qui le fait repartir »
          Il faudrait donc étudier ce script afin de voir si l’ajout d’un courriel est faisable.

          A+

          • Monsieur Alban, j’ai fais selon votre idée, j’ai créé une ligne dans le crontab qui active mon script, ç’était la bonne idée bien sur … merci encore … le mail me parvient maintenant, mais … il me parvient toutes les 10 mn, comme programmé dans le crontab … donc mon script ne détecte pas le domoticz en action … il fait rebooter domoticz et il envoie le mail toutes les 10 mn même si domoticz est actif, … 🙁 …
            en fait mon problême c’est de detecter domoticz actif ou inactif … c’est cela qu’il me manque … maintenant …

            • Re,

              Rapidement (je ne fais que passer),
              Pour connaître le status de Domoticz, j’imagine qu’il faut faire un
              sudo service domoticz status

              A suivre,
              Je vais essayer de m’y pencher (mais je n’ai pas Domoticz)

              ++

              • Oui, il faut faire un « sudo service domoticz status » et l’on a quelques lignes dans la console, il faut rechercher dedans la chaine « running » ou « stopped » mais je vais chercher comment faire.
                Vous êtes très serviable mais faites vos affaires d’abord, je ne voudrais vous perturber.
                Le logiciel Domoticz est intéressant, on peut le piloter à partir de son smartphone et même moi qui n’y connais pas grand chose, j’arrive à m’en servir. mais il a un bug, il s’arrête ou ne demarre pas normalement dans sa dernière version. merci encore et A+.

                • Re,

                  J’ai testé un truc chez moi.
                  J’ai un vieux RpiB+ qui sert de back-up FTP
                  Si je fais sudo service proftpd status, ça me répond « (…) Active: active (running) since (…) ».

                  Du coup, je stoppe le processus avec
                  sudo service proftpd stop

                  Si je fais sudo service proftpd status, j’ai bien ‘service inactif’.

                  Là, je crée un script avec
                  nano script-status.sh

                  Et je colle

                  #!/bin/bash
                  SERVICE=proftpd
                  #Comme ça on note le service une seule fois ; vive la fainéantise
                  if (( $(ps -ef | grep -v grep | grep $SERVICE | wc -l) > 0 ))
                  then
                  echo "oui, oui, $SERVICE est actif ; tout va bien :-)"
                  else
                  echo "Flute, $SERVICE est planté ; bon, pas grave, on redémarre"
                  sudo service $SERVICE start
                  echo "C'est bon, je te l'ai redémarré ton $SERVICE !"
                  echo | mutt -s "$SERVICE a été redémarré" mon-adresse@machin.truc
                  fi

                  Vérification avec
                  sudo service proftpd status
                  Mon service est bien dead

                  Mais si je fais
                  bash script-status.sh, alors mon prochain sudo service proftpd status me renvoie un service actif 🙂

                  Bref, je pense que si tu remplaces proftpd par domoticz, ça devrait fonctionner.

                  Ensuite, tu te colles une tache cron qui execute ce script toutes les 10 ? 30? 60? minutes et c’est bon 🙂

                  Redis-moi,

                  (ouais, on se tutoie, c’est plus cool)

                  Chez moi, ça donne donc (proftpd étant actif par défaut):
                  pi@raspberrypi:~ $ bash script-status.sh
                  oui, oui, proftpd est actif ; tout va bien :-)

                  Mais si je le stoppe, alors :
                  pi@raspberrypi:~ $ sudo service proftpd stop
                  pi@raspberrypi:~ $ bash script-status.sh
                  Flute, proftpd est planté ; bon, pas grave, on redémarre
                  C'est bon, je te l'ai redémarré ton proftpd !
                  pi@raspberrypi:~ $ bash script-status.sh
                  oui, oui, proftpd est actif ; tout va bien :-)
                  pi@raspberrypi:~ $

                  Et comme j’ai configuré mutt = je reçois un courriel disant que le service a été redémarré.
                  (On pourrait écrire un petit article là-dessus 😉 )

                  • Bonjour, et merci, merci, j’ai appliqué, ça fonctionne, ça me redémarre domoticz s’il est arrêté, j’ai mis crontab relance toutes les heures, le hic c’est que cela m’envoie un mail toutes les heures même si domoticz est running … ça me note :  » usage : grep [OPTION] … PATTERNS [FILE] … Bon, aujourd’hui c’est relâche … 🙂 … faites un bon réveillon et espèrons pour tous que l’année nouvelle soit un peu plus cool ! … 🙂

  2. Bonjour Alban,
    J’utilise une Raspberry Pi pour un projet de contrôle d’un système énergétique et j’ai besoin d’exécuter un script python au démarrage.
    J’ai donc suivi ton tutoriel mais le script semble être chargé mais ne s’exécute pas.
    Dans le terminal j’ai tapé :

    $ sudo chmod +x /home/pi/V1_3_carte_acquisition.py
    $sudo nano /etc/rc.local

    Cela ouvre le fichier rc.local :

    #!/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.
    
    sudo python3 /home/pi/V1_3_carte_acquisition.py&
    
    # Print the IP address
    # "_IP=$(hostname -I) || true
    # if [ "$_IP" ]; then
    # printf "My IP address is %s\n" "$_IP"
    # fi
    
    exit 0

    J’ai sauvegardé en tapant CTRL+X.

    Voilà où j’en suis, je ne comprends pas pourquoi le script ne s’exécute pas. (Normalement il est sensé m’afficher des valeurs sur le terminal, c’est ce qu’il fait quand je le lance manuellement)

    Merci d’avance !

    PS : j’utilise un Raspberry3 et mon IDE python est Thonny3.2.6

    • Update :
      J’ai forcé l’exécution de rc.local directement dans le terminal pour trouver l’erreur et j’obtiens cela :
      pi@raspberrypi:~ $ cd /etc

      pi@raspberrypi:/etc $ dir rc.local
      rc.local

      pi@raspberrypi:/etc $ sudo ./rc.local

      Traceback (most recent call last):
        File "/home/pi/V1_3_carte_acquisition.py", line 12, in 
          import paho.mqtt.client as mqtt
      ModuleNotFoundError: No module named 'paho'

      J’utilise des module de la bibliothèque de python qui ne sont pas reconnus quand je lance le script directement sur le terminal. Du coup je reformule mon problème : est-il possible de lancer l’IDE Thonny au démarrage et d’y lancer le script directement ?

      Merci

      • EDIT : En fait c’est bon !
        J’ai lancé Thonny en tant que service dans le fichier rc.local pour charger tous les modules puis j’ai lancé mon script dans le fichier /etc/xdg/lxsession/LXDE-pi/autostart en utiliser votre première méthode et là plus de problèmes de chargement de modules.

        Merci beaucoup pour votre tuto, les deux méthodes que vous explicitez conviennent à toutes les situations. Merci encore 🙂

        • Hello !

          Désolé, j’ai été pas mal pris … et … tu as éteint le feu avant mon arrivée 🙂

          Merci pour ta persévérance et pour ta participation au système du partage en revenant poster ta réponse.

          Bien à toi,

  3. Bonjour
    Je suis un débutant de 66 ans. Je viens d’installer mon Raspberry PI 3B+ avec jdownloader.
    Je suis sous Linux raspberry 5.4.51-V7+ #1333
    Tout fonctionne bien
    Je souhaite simplement automatiser au démarrage le lancement de JDownloader

    en mode terminal j’ai créé ce petit script que j’ai appelé « run.sh » qui se trouve dans le répertoire /home/pi/jdownloader2 :
    Détail du script :
    #! /bin/sh
    cd /home/pi/jdownloader2
    java -jar /home/pi/jdownloader2/JDownloader.jar

    Ce script fonctionne parfaitement quand je le lance depuis le mode graphique et que je l’exécute en mode terminal.

    J’ai essayé la méthode préconisée pour le mode graphique.
    Je fais chmod..
    on édite le système de démarrage de l’interface graphique avec sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

    @lxpanel --profile LXDE-pi
    @pcmanfm --desktop --profile LXDE-pi
    @xscreensaver -no-splash
    @lxterminal --commande=./run.sh
    point-rpi

    Je reboot pour plus de sécurité !!
    au login je rentre mes identifiant/MdP.
    Alors une fenêtre de terminal s’ouvre une fraction de seconde et RIEN !!!

    AU SECOURS !!!

    • Hello Films_de_sf,

      Si tu remplaces
      @lxterminal --commande=./run.sh
      par
      bash /home/pi/jdownloader2/run.sh
      Tu as la même chose ?

      Et si tu remplaces
      @lxterminal --commande=./run.sh
      par
      @lxterminal --commande="./run.sh"
      Ce n’est pas mieux ?

      On dirait que tu vois que ça lance le terminal qui se referme ensuite.
      mais le processus est-il actif ???

      A noter :
      Comme tu utilises le lancement lors de l’ouverture de la session graphique, tu peux juste faire un Log-Out et te reconnecter ; tu gagneras du temps 😉

      ++

      • Ça marche !!! euh non le programme est opérationnel et fonctionnel (en bon français).

        Je dois patienter une quinzaine de secondes avant de voir le logiciel s’afficher sur le bureau. C’est juste le temps nécessaire pour démarrer le logiciel.

        Merci beaucoup pour le coup de main car je galère sur ce démarrage auto depuis une semaine.
        Ce raspberry me permet de me connecter depuis mon camping car à Internet (et au wifi) grâce à un hotspot mobile de type Huawei E5577-321. J’ai encore un petit souci (que je vais régler) c’est d’avoir une IP statique sur ma Framboise et je pourrai alors me préoccuper de me connecter depuis le web sur la framboise!! Encore pas mal de transpiration !!
        MERCI BEAUCOUP !!!

        • Du coup, la bonne commande était juste @lxterminal --commande="./run.sh" ?
          Pour être sûr et pour aider les autres puisque mon site est hyper visité et une référence mondiale 😀

          Edit :
          J’ai testé et ça fonctionne avec ça :
          – On édite le système de démarrage de l’interface graphique avec sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
          – Et on ajoute ceci en fin de fichier
          bash /home/pi/jdownloader2/run.sh

          ++

  4. Bonjour, et oui.. je suis de retour.
    Je rencontre un autre problème, je pensais pouvoir le résoudre tout seul, mais j’aurais besoin d’aide.

    Quand on lance le script manuellement, tout s’écrit dans le shell, ex: print(‘test’)
    alors que si on le lance automatiquement (en suivant tes méthodes), tout s’écrit dans le terminal.

    Est-ce qu’il est possible qu’au lancement de la raspberry, l’interface python avec le shell s’ouvrent et s’executent?

    • Hello,
      Perso, j’utilise 2 solutions :
      – Celle du lancement automatique qui exécute le script en le mettant dans l’autostart
      python3 /home/pi/Borne_Photos_x1x4x9_fond/Borne_Photos_x1x4x9.py
      – Celle du lancement automatique (via autostart) qui exécute le terminal qui exécute lui-même le script
      lxterminal --command="/home/pi/Borne_Photos_x1x4x9_fond/Borne_Photos_x1x4x9.py"

      L’avantage du second est qu’il me suffit de faire « Ctrl »+ »Alt »+ »F2 » pour passer en TTY et pater pkill lxterminal pour couper le script 😀

      Je déconseille de lancer geany ou thonny pour lancer le script (si j’ai compris ce que tu voulais faire), mais c’est faisable, a priori, avec cette méthode ; faut que je teste 😉

      ++

      Edit :
      Tests faits :
      @geany /home/pi/Borne_Photos_x1x4x9_fond/Borne_Photos_x1x4x9.py
      et
      @thonny /home/pi/Borne_Photos_x1x4x9_fond/Borne_Photos_x1x4x9.py
      Ces 2 commandes lance bien le programme voulu et le script désiré est chargé.
      Cependant, il n’est pas exécuté.

      Tu ne voudrais pas plutôt avoir un système qui injecte des logs dans un fichier ?

      • Pour résumer la situation:

        Je suis stagiaire en entreprise et on me demande d’optimiser certaines machines en utilisant raspberry (ce qui n’est pas du tout mon domaine d’application car je fais une formation optique).
        Bref, j’ai un programme « anti-choc »(fait avec raspberry, par un technicien de l’entreprise) qui s’applique sur des machines industrielles.
        On me demande donc de modifier le programme pour qu’il se lance automatiquement au démarrage. (car j’ai réussi a faire sur les caméras), mais là je n’y arrive pas.

        La méthode manuelle fournie par le technicien est:
        Clique droit sur le programme / Python3 (IDLE) / F5
        Lorsqu’on fais cette démarche, toutes les infos s’écrivent dans le shell. (ce qui me parait normal)
        Alors que si j’essaye de lancer le programme via le terminal (comme quand je veux qu’il se lance automatiquement), les infos s’écrivent dans le terminal.

        Et pour moi, c’est ça qui fait qu’au démarrage, le script ne se lance pas.
        Pour toi, le problème viens de là ou c’est tout autre chose? Et aurais tu des solutions?

        Merci et bonne journée à toi 🙂

        • Re,

          « La méthode manuelle fournie par le technicien est:
          Clique droit sur le programme / Python3 (IDLE) / F5 »
          Clic droit ???
          Donc, il vient du monde Windows 😀

          Plus sérieusement,
          si on veut que le script s’exécute, on le lance.
          Shell ou Terminal, on s’en fiche.

          Tu peux tester ça ?

          Dans le terminal
          chmod +x /home/pi/dossier-voulu/script-voulu.py

          Ensuite,
          sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

          Tu y ajoutes, en fin de fichier :
          @lxterminal --command="/home/pi/dossier-voulu/script-voulu.py"

          Puis
          sudo reboot

          Je ne vois pas pourquoi le script ne se lancerait pas.
          Normalement, tu dois voir le bureau du Rpi se lancer puis la fenêtre du Terminal s’ouvrir avec un truc qui s’écrit et pouf le script se lance.
          Sur ma Borne Photos, je n’ai pas le temps d’en voir plus puisque j’ai un affichage plein écran qui prend … tout l’écran 😉

          Redis-moi,

          ++

            • Re,

              Lorsqu’on fais cette démarche, toutes les infos s’écrivent dans le shell. (ce qui me parait normal)
              Alors que si j’essaye de lancer le programme via le terminal (comme quand je veux qu’il se lance automatiquement), les infos s’écrivent dans le terminal.

              Ces 2 processus sont normaux.

              Et on sait que le script fonctionne

              Là, il faut « juste » réussir à lancer le script au démarrage.
              Quelle est la ligne de code que tu tapes pour lancer le code en manuel ?

              Je viens de faire des tests
              Avec mon script python, le script reste actif car j’ai une boucle while (tant que en anglais) donc le processus reste actif.
              Mais avec un simple script, la fenêtre se ferme une fois le boulot effectué (elle n’a pas tort la petite 😉 au fond)

              Tu peux tenter de faire
              sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
              Tu y ajoutes, en fin de fichier :
              @lxterminal --command="/home/pi/script.sh"

              Puis tu vas créer le script en faisant
              touch /home/pi/script.sh

              Ensuite tu y colles ceci :
              #!/bin/bash
              sudo apt update
              echo "Ceci est une réussite"
              sleep 30

              Tu enregistres et tu quittes

              Tu tapes
              chmod +x /home/pi/Desktop/test.sh

              Tu fais « framboise » —> « déconnexion » —> « logout » puis tu retapes ton mot de passe afin de relancer la session graphique (plus rapide qu’un redémarrage)

              Tu vas voir une fenêtre du terminal qui s’ouvre, lance un sudo apt update puis écrit ceci est une réussite puis fait une pause de 30 secondes … avant de … se fermer

              Je pense que le script du technicien s’exécute une seul fois.

              Dans le terminal, quand tu le lances à la main, tu retombes sur pi@raspberrypi:~ $ au bout d’un moment ?
              (je pense que c’est à ce moment là que la fenêtre se ferme si elle est lancée en autostart)

              ++

              • La ligne de code que je tape pour le lancer manuellement est:
                python3 /home/pi/script.py
                et oui, quand je relance manuellement, je retombe sur:
                pi@raspberrypi:~ $
                (du coup, je comprend pourquoi avec la camera j’avais du faire une boucle « while »)

                Ensuite, j’ai testé de faire le script.sh, mais encore une fois, au reboot, aucune fenêtre de terminal ne se lance.
                Ce qui est frustrant car je me rend compte que théoriquement, c’est censé fonctionner.

                • Lors du redémarrage, le .sh fonctionne mais pas le .py

                  Est ce qu’il y a possibilité de lancer un .py en boucle à partir d’un .sh?

                  (et je pense que ce sera ma dernière question, je ne t’embêterai plus par la suite ^^)

                  • Yo,
                    Tu as tenté de passer un coup de
                    chmod +x /home/pi/script.py pour voir ?

                    Sinon, tu fais un script sh qui exécute la commande
                    python3 /home/pi/script.py
                    Mais ça ne parait pas logique

                    Ma méthode
                    chmod +x /home/pi/script.py

                    puis,
                    sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

                    avec ajout de :
                    @lxterminal --command="/home/pi/script.py"

                    Puis
                    sudo reboot

                    fonctionne chez moi (je viens de le refaire suite réinstallation à neuf)

                    • Oui, je suis ta méthode à la lettre, mais sans succès. (ça à fonctionné avec mon programme de caméras)
                      Pour l’instant j’ai fais un script sh qui exécute la commande car ça semble fonctionner.

      • Bonjour Alban,

        Nous avions échangé il y a quelques mois au sujet de mon projet de photobooth pour lequel tu m’avais aidé !

        Aujourd’hui je souhaite que le programme python se lance tout seule à l’allumage…

        J’ai suivi plusieurs tutos mais rien n’y fait, rien ne fonctionne.

        Le seul résultat que j’ai eu est avec la méthode ci-dessus qui m’ouvre un terminal vide nommé camera.py (nom de mon programme) au démarrage…

        Pour info, lorsque je souhaite lancer mon programme, je tape « sudo python camera.py start »

        J’ai l’impression dont que le prefixe que j’ai placé dans le fichier autostart ne devrait pas être lxterminal… J’ai essayé d’ajouter « start » à la fin mais cela n’a pas fonctionné =D

        As-tu une idée ?

        Merci beaucoup !

          • Bonjour Alban,

            Merci de ta réponse.

            Lorsque je suis les instructions, j’ai une fenêtre noire type terminal qui s’ouvre et qui s’intitule « camera.py », du nom de mon programme.

            Mais il n’y a pas d’exécution de celui-ci, comme lorsque je tape « camera.py start ».

            C’est comme si mon script python s’ouvrait au travers d’un autre programme…

            J’ai vérifié les droits de propriété et de modif, les deux sont affectés à « Tout le monde ».

            J’ai essayé la méthode « python /répertoire/programme.py », « python3 /répertoire/programme.py », « python3.5 /répertoire/programme.py » ainsi que « lxterminal –command= »/répertoire/programme.py » mais rien ne fonctionne.

            Soit mon RPI démarre normalement, soit la fenêtre noire 🙁

            Peut-être que la version de python ou le contenu de mon programme peut avoir un incidence ?

  5. Bonjour,
    Ça fait un moment que cet article existe, du coup j’espère quand même que quelqu’un va me réponde.

    J’ai essayé les deux méthodes proposés ci-dessus (en plus d’un paquet d’autres méthodes vu sur internet) et le résultat ne me conviens pas.
    Pourtant, je ne demande pas quelque chose de bien compliqué:
    – J’ai une picaméra branchée à un raspberry pi 3 (sur raspberry pi os)
    – J’ai un tout petit programme python qui consiste à afficher en fullscreen la preview de la camera. (car le record a trop de latence)
    J’aimerai que mon programme se lance au démarrage: et c’est le cas, si je demande de faire une capture, il la fait. Mais je ne sais pas pourquoi, la preview elle, ne s’affiche pas.

    J’aimerai que dès que l’affichage graphique du raspberry est lancé, la preview en fullscreen sois affichée.

    Je ne sais pas si je suis clair dans mes propos,
    Merci d’avance

    • Salut Nemo,

      C’est possible puisque je le fais 🙂
      Rpi3 avec module caméra 5 Mpx.
      Au démarrage, tu as un preview avec la date et l’heure puis une invitation à cliquer sur un bouton et ça attend
      Ensuite, tu as possibilité de faire 1 photo ou une image de 4 ou une image de 9 (pour ce script là).

      En gros, c’est un script python3 qui fonctionne parfaitement si lancé via le terminal.
      Ensuite, ce script est juste intégré à l’autostart.

      Si c’est un script qui nécessite l’interface graphique, il ne faut pas le mettre dans rc.local (j’ai essayé évidemment pour voir).

      ++
      @+

      • Merci pour ta réponse rapide!
        Est ce qu’il est possible d’avoir un exemple du script que tu utilise?
        Je n’ai jamais touché à une raspberry ni au langage Python auparavant et ça m’aiderai beaucoup. Je vais aussi essayer de voir comment coder directement dans le terminal.

        • Re,

          Je suis en reconversion donc études en sus du travail = pas mal pris (en plus, il parait que j’ai des « mini-moi » de N°1 à N°4 qu’il faut gérer un minimum).
          Mais je tente de t’aider dans ce sens en te pondant un script python de base dès que je peux.
          Allez ; je retourne à mes devoirs* !

          * : A mon âge ; je suis vraiment taré … 😀

            • Tu ne veux pas me déranger … mais … je suis « dérangé » 🙂
              Comment un Diététicien Spécialisé en Nutrition Entérale rédige des articles aussi éloignés de sa formation ?
              En passant du temps à chercher des réponses pour lui, son autre lui (voire un troisième) … et … les gens qui posent des questions ici ou sur des forums 😀
              C’est ça l’esprit du Libre 😉

              • C’est fait !
                On branche le Rpi.
                ça démarre Raspberry Pi OS en mode graphique
                Dès que la session graphique est lancée, ça joue le script python.
                Preview (aperçu) plein écran en mode miroir (gestuel plus naturel car comme dans un miroir)
                Superposition de la date et de l’heure en mode flash avec une autre inscription puis affichage de « Clic = Photo »
                Si clic, alors photo après délai de 5 secondes puis affichage de ladite photo à l’écran après retournement pour repasser en affichage naturel.
                Et voilà 🙂

                • Salut,

                  Je voulais te faire un installateur automatique.
                  Mais, je vais t’envoie le script et tu vas essayer.

                  J’ai peu de temps cause reconversion (travail et école) … donc on tente.

                  Tu commences par
                  sudo apt update && sudo apt install imagemagick -y

                  Tu décompresses le zip dans /home/pi

                  Tu tapes
                  sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

                  Et tu ajoutes
                  @lxterminal --command="python3 /home/pi/Nemo/test_preview.py"

                  Cette astuce permet de lancer le script en auto mais de garder la main en pouvant couper le terminal en passant sur une console sur TTY2 et faire un pkill lxterminal car à chaque reboot, ton script se lance 😀

                  Je te laisse jouer, j’ai déjà 30 minutes de retard 😉
                  On en recause,

                  ++

                  • Salut,

                    J’ai testé ce que tu m’a dit mais il me semble que le programme ne s’exécute plus au lancement (il ne prend plus de capture à son lancement).
                    Alors que si je fais:
                    sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

                    et que ensuite je tape uniquement:
                    python3 /home/pi/script.py

                    La capture se fait bien au lancement du raspberry (mais bien évidement, pas la preview).

                    Je précise que je suis directement sur la raspberry (j’ai branché un écran, clavier, souris) et je ne passe pas par un ordinateur (donc j’utilise pas de puTTY) Cela a une influence?

                    Voila, bonne journée à toi

                    • Je ne passe pas par PuTTY car je n’ai pas Windows, mais cela ne change rien.
                      Sur mon Rpi, le dossier que je t’ai envoyé tourne nickel.
                      Efface ta ligne dans l’autostart et teste le script à la main en tapant python3 /home/pi/script.py directement dans un terminal.
                      Je passe par courriel pour ne pas trop remplir les commentaires ; je reviendrai noter la solution finale 😉
                      ++

  6. Bonjour Alban,
    Un peu plus d’un an après, je réactive ce sujet, vu qu’on déplore toujours « l’absence de tutoriels clairs » à ce sujet, maintenant sous Debian Buster avec LXDE 🙂
    Je viens de terminer l’installation d’un cadre-photo sur une raspberry qui utilise ce système, qui n’est pas censé rester allumé 24/24, mais qui devrait se lancer tout seul au démarrage…
    Des tutos j’en ai lu et testé des dizaines (généralement contradictoires :-), aucun ne marche.
    Je viens d’implémenter ta méthode « ceinture et bretelles » (rc.local et autostart), le bureau LXDE est affiché mais rien d’autre.
    Pour être honnête j’ai appris un truc nouveau et potentiellement utile, que je n’ai lu nulle part ailleurs : si je me déconnecte/reconnecte au bureau, effectivement cette fois le diaporama se lance. Mais pour un afficheur sans clavier, ça reste pas pratique 🙂
    Merci pour l’astuce !

    • Bonsoir Fred,

      Question, le cadre photo fonctionne comment ?
      Parce que « mes »méthodes de lancement de script fonctionnent dans le cadre de mon article Affichage dynamique ou pour le lancement de mes bornes à selfy.
      https://trevilly.com/affichage-dynamique-avec-un-raspberry/

      Bon … Je sens que je vais devoir installer Debian Buster pour tester tout ça 🙂

      Comme je ne suis pas en confinement, je ne vais pas forcément avoir beaucoup de temps, mais je tente.

      @+

      • Merci pour ton retour Alban, mais n’y passe pas trop de temps si tu a autre chose à faire ! 🙂
        La raspberry démarre directement dans l’environnement LXDE de Buster (autologin).
        La partie diaporama se résume à l’utilisation du logiciel « feh », qui est une visionneuse avec des fonctionnalités puissantes pour le « slideshow ».
        Il se lance via le script /home/pi/feh_launcher (c’est pas original, mais la ligne de commande est longue comme le bras :-).
        Ce script est déclaré d’une part dans rc.local, et d’autre part dans un lanceur sur le bureau LXDE (fichier .desktop), lui-même référencé dans « autostart ».
        J’ai lu pas mal de grognements sur les forums dûs au fait que l’arborescence vers autostart aurait changé depuis Jessie, mais aucune des « solutions » trouvées ne fonctionne…
        Je me demande si je ne vais pas finir par réinstaller la Pi sous Ubuntu, j’ai lu du bien des nouvelles images, et ce sera peut-être moins la jungle que Debian où on te conseille de lire le code source 🙂
        @+
        fp

        • Bon, comme on dit, ça vient de « tomber en marche »… pour des raisons non totalement élucidées 🙂
          Je ne sais pas combien d’échanges plus ou moins clairs et/ou contradictoires j’ai épluchés ce matin, avec le même nombre d’éditions d’obscurs fichiers et les reboot associés, mais voilà ce que j’ai fait (et cru comprendre 🙂 :

          * pour commencer j’ai retiré mon ajout de rc.local qui ne pouvait pas marcher : feh est un binaire Linux lancé en ligne de commande, mais qui a besoin de l’environnement X pour afficher les photos.

          * ensuite il semble que les deux directives « autostart » au niveau système (/etc/xdg/lxsession/LXDE-pi/autostart) et au niveau utilisateur (~/.config/lxsession/LXDE-pi/autostart) peuvent entrer en conflit et/ou s’annuler mutuellement.

          – du coup j’ai défait tous mes essais de modifs dans le premier, pour revenir à ce qui semble être la conf par défaut :
          @lxpanel –profile LXDE-pi
          @pcmanfm –desktop –profile LXDE-pi
          @xset s off
          @xset -dpms
          @xset s noblank
          @xscreensaver -no-splash
          @point-rpi

          – et re-tenté ma chance dans le second de la même façon, en ajoutant juste un ligne (l’avant-dernière ci-dessous) pour lancer mon fichu bazar :
          @lxpanel –profile LXDE-pi
          @pcmanfm –desktop –profile LXDE-pi
          @xset s off
          @xset -dpms
          @xset s noblank
          @lxterminal –command /home/pi/feh_launcher
          @point-rpi
          Après quelques essais infructueux (avec @sh, des quotes etc.) c’est celle-ci qui a fini par fonctionner.
          En effet, feh est un outil graphique qui peut être lancé directement depuis un bureau X.org, mais aussi depuis un terminal ouvert dans ce même bureau.
          Je ne sais pas pourquoi, mais feh semble mieux fonctionner dans le second cas. Ca permet aussi d’afficher quelques lignes de texte dans le script de lancement, pour qu’il se « passe quelque chose » pendant que le logiciel constitue sa liste de presque 18000 images 🙂
          De toute façon c’est ensuite masqué par le diaporama…
          Ouffff 🙂

  7. Bonjour Boris,
    J’ai suivi vos méthodes mais sans succès. Je cherche à lancer un script python (3.5) qui une fois terminer devrait créer un fichier texte hors les commandes (sudo nano /home/pi/Monscript.py et sudo chmod +x /home/pi/Monscript.py) ne s’effectue pas car une fois redémarré mon raspberry pi (model 3b+) ne les prend même pas en compte. En effet, il n’y a même pas de message d’erreurs ou quoique ce soit d’autres indiquant que Monscript.py soit considéré au démarrage. J’ai par ailleurs fait en sorte que les script en python 3.5 étaient bien exécuté par défaut.
    Que dois-je faire?
    Merci d’avance.

    • Salut Matth,
      Bon, moi, c’est Alban ; Boris était un visiteur.
      Mais c’est pas grave, je vais répondre tout de même. 🙂
      Quand tu fais sudo nano /home/pi/Monscript.py = tu ouvres nano et tu peux créer ton script puis l’enregistrer (« Crtl »+ »x » puis « o » puis « Entrée »)
      Ensuite, tu dois le voir dans /home/pi/
      La commande sudo chmod +x /home/pi/Monscript.py ne sert qu’à donner les droits.
      Si tu veux que ton script puisse être exécuté au démarrage, tu dois l’ajouter dans rc.local en faisant sudo nano /etc/rc.local et en ajoutant la ligne sudo python3 /home/pi/Monscript.py& juste après la ligne # Print the IP address
      Ensuite, tu enregistres tes modif (« Crtl »+ »x » puis « o » puis « Entrée ») et il ne te restera plus qu’à redémarrer.
      Redis-moi,
      ++

  8. bonjour
    merci beaucoup pour ce tuto qui m’à permis de rendre automatique un script de commande d’un watchdog externe.
    cela fonctionne parfaitement.

    • Bonjour phenixrb,
      Merci pour ce Retour.
      J’ai donc eu raison de rédiger cet article puisqu’il semble servir dans des domaines variés !
      D’ailleurs, j’en profite ; si des lecteurs souhaitent rédiger un article pour aider la communauté, c’est tout à fait possible.

    • Pas de quoi Troptrop !
      Les forums ont leurs avantages (j’y ai passé des heures et des heures), mais rien ne remplace la concaténation des infos en un résumé plus aisé à suivre.
      Et c’est justement le but de cet article (et, plus largement, de ce site) 😉
      Au plaisir,

  9. Rétroliens : Sonnette connectée – TREVILLY.COM

  10. Super!
    Papa également de 3 enfants, qui m’ont abandonné voila plus de 20 ans, seul avec leur informatique.
    Je trouve aujourd’hui dans vos explications des réponses a beaucoup de questions sans réponses. Et pourtant, on en trouve de toutes sortes, aucunes ne fonctionnent.
    Merci pour le gros coup de main efficace .

    • Bonsoir Babel,
      C’est typiquement le genre de commentaire que certaines personnes jugent « inutile ; ne servant à rien« , mais que je trouve utile et agréable, voire indispensable 🙂
      Ça fait vraiment plaisir.
      Merci,
      Vraiment !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.