Exécution d’un script interactif au boot avec Systemd

On va lancer un script au démarrage d’une machine utilisant Systemd. Cela fonctionne donc sur Red Hat 7 et Centos 7, Arch Linux et prochainement sur Debian 8.

Ce type de script permet par exemple de poser quelques questions avant le login dans le but d’initialiser un template, configurer la machine ou simplement afficher un message.

Au niveau des pré requis il est juste nécessaire d’avoir le programme « dialog ».

Sur la branche Redhat

Sur la branche Debian

 Le fichier de service Systemd

Chaque service systemd est défini par son fichier contenant les informations de lancement du programme.

Sur Centos 7 ces fichiers se trouvent sous /etc/systemd/system/, sur d’autre système il se trouve sous /usr/lib/systemd/system. On va donc créer un fichier service sous /etc/systemd/system/monservice.service avec le contenue suivant:

Pour la petite explication, on demande à systemd d’executer le script dans la console tty2 avec les options suivantes:

  • « TTYReset » pour nettoyer la console
  • « TTYHangup » pour déconnecter de cette console l’utilisateur après l’execution
  • « StandartInput » pour connecter la sortie standart à la console TTY2 et donc capturer les entrées saisies par l’utilisateur

On active le service au démarrage de la machine

A partir de la, systemd doit voir le service, pour le vérifier

 

Le script

On demande au service d’exécuter un script /root/my_simple_interactive_script.sh. On va donc le créer (pensez bien à le rendre exécutable).

Plus qu’a relancer la machine pour voir le résultat.

dialog_systemd

Dialog permet de faire pas mal de chose, un menu, checkbox, radiobox, etc… vous pouvez donc faire des scripts élaborés.

 

2 thoughts on “Exécution d’un script interactif au boot avec Systemd”

  1. numa dit :

    Bonjour et merci pour votre post.

    Je rencontre actuellement un petit problème avec l’exécution de mon script sur debian 8. Le script s’exécute parfaitement mais la fenêtre de dialogue ne reste affichée que 5 seconde avant de basculer sur l’invite de login (installation sans interface graphique) or j’aimerais pouvoir imposer au système d’attendre que je valide le message avant de lancer totalement le système.

    Je vous remercie d’avance pour vos lumières 🙂 Cdt,

Laisser un commentaire

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