Démarrer un script python au moment du boot d'un Raspberry Pi 4 avec un service systemd

Publié le
Bob Ross

La méthode systemd permet un contrôle avancé du système. Elle peut être personnalisée pour garantir que le script ne démarre que lorsque certaines conditions sont remplies. Le script Python est exécuté ici dans un service de lancement automatique au démarrage sur le RPI.


1 - Le Script Python

Le script open-url.py ouvre l'URL de notre club de robotique dans Firefox.
--> Mettre à jour la base de données des paquets  

sudo apt update

--> Mettre à jour le système

sudo apt full-upgrade

--> Créer un dossier Scripts pour sauvegarder le script Python  

sudo mkdir /home/raspi/Scripts

--> Créer le fichier open_url.py pour l'éditer avec Geany

sudo geany

--> Entrer le code dans Geany

#!/usr/bin/python3
# Définit le chemin de l'interpréteur Python à utiliser pour exécuter le script

import subprocess
# Importe le module subprocess, qui permet d'exécuter des commandes système depuis Python

url = "https://werobot.fr"
# Définit une variable contenant l'URL de la page web à ouvrir

firefox_command = ["firefox", url]
# Crée une liste contenant la commande à exécuter pour ouvrir Firefox avec l'URL spécifiée

subprocess.run(firefox_command)
# Exécute la commande spécifiée dans firefox_command en utilisant le module subprocess
# Cela lance Firefox et ouvre la page web spécifiée

--> Enregistrez-le dans le dossier /home/raspi/Scripts avec le nom open-url.py


2 - Le Service systemd

Emplacement des fichiers de service dans l'arborescence des répertoires :
--> Les services fournis dans les paquets téléchargés vont dans usr/lib/systemd
--> Les services créés par l'utilisateur vont dans etc/systemd/system (comme le script python open-url.py)

--> Créer le fichier de service open-url.service avec Geany pour automatiser le script open-url py au démarrage

sudo geany

--> Entrer le code dans Geany

[Unit]
# Description du service
Description=Ouvre une URL dans le navigateur par défaut

# Ce service sera démarré après le démarrage complet du système
After=multi-user.target

# Ce service nécessite une connexion réseau disponible
Wants=network-online.target

[Service]
# Le service est exécuté lorsque toutes les tâches système sont terminées et qu'il est devenu inactif
Type=idle

# Commande à exécuter pour démarrer le service
ExecStart=/home/frapoi/Scripts/open-url.py

# Redémarrer le service en cas d'échec
Restart=on-failure

# Exécuter le service en tant qu'utilisateur 'frapoi'
User=frapoi

# Définir la variable d'environnement DISPLAY pour indiquer quel écran utiliser
Environment=DISPLAY=:0

# Rediriger la sortie standard vers un fichier journal
StandardOutput=/var/log/open-url.log

# Rediriger les erreurs vers un fichier journal
StandardError=/var/log/open-url.error.log

[Install]
# Activer ce service au démarrage du système
WantedBy=multi-user.target

--> Enregistrez-le dans le dossier /etc/systemd/system/ avec le nom open-url.service

--> Activer le fichier open-url.service

sudo systemctl enable open-url.service

--> Redémarrez le RPI

sudo reboot

La page d'accueil de notre site http://werobot.fr s'ouvre dans Firefox.
Le script peut être adapté pour automatiser le lancement de n'importe quels scripts Python et fournit le principe de base.