Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ceci est une ancienne révision du document !
- Pour choisir, voir les autres Tags possibles dans l'Atelier.
Depuis le changement d'INIT à SystemD beaucoup d'entre nous on du réapprendre… des choses simple que faisait /etc/inittab à la sauce SystemD.
Afficher sur le tty1 le résultat d'un script bash, dans mon exemple ce script affichera l'adresse ipv4 de la machine au lieu de l'écran de login habituel et n'affichera qu'un écran de login sur le TTY2 seulement
Bon on commence par le plus simple : Pour plus de commodité j'enregistre toujours mes scripts perso dans /etc/bin, donc la je le créer dans /etc/bin/show_my_ip.sh
#bin/sh clear while true; do echo -e "\nBonjour et bienvenue sur $HOSTNAME\n\nMon adresse ip est la suivante : \n" ip addr |grep --color=always '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' sleep 10 clear done
Je ne commente pas le script car c'est pas le but du tuto(si vous voulez plus d'explication –> MP), Ce script Bash va afficher en continue l'adresse ipv4 des différentes interfaces réseau
ensuite vu que je veux afficher ce script sur mon tty1 il va falloir que je dise à SystemD d’arrêter de lancer agetty (expliquer) sur le tty1
sur INIT il suffisait d'éditer l'inittab et de remplacer
1:2345:respawn:/sbin/mingetty tty1
par
1:2345:respawn:/etc/bin/mon_script.sh
Maintenant avec SystemD, un seul getty est lancer par défault. Si vous vous déplacer sur un autre tty(Ctr+Alt+F2 par example), getty sera lancer ici(de manière interactive).
pour modifier ce comportement par défault de SystemD il faut éditer le fichier
/etc/systemd/logind.conf
Puis dé-commenter NAutoVTs=6 et placer sa valeur à zero. ça devrait vous donner un fichier comme ça
# This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # See logind.conf(5) for details [Login] NAutoVTs=0 #ReserveVT=6 #KillUserProcesses=no #KillOnlyUsers= ...
Ensuite on lui dit de démarrer quand même un login sur le tty2 pour ce faire :
systemctl disable getty@tty1.service
Puis :
systemctl enable getty@tty2.service
Il va falloir créer un script de démarrage pour SystemD afin de lancer notre script sur le tty1
[Unit] Description=Afficher mon ip avec systemd [Service] type=idle #systemd va retarder l'exécution du service jusqu'à ce que tous les autres soient finis ExecStart=/bin/bash /etc/show_my_ip.sh #la ligne de commande à éxécuter StandardOutput=tty #spécifier ou va la sortie "standard du script" ou peut l'afficher dans les log, un tty ou pas l'afficher du tout TTYPath=/dev/tty1 #je précise sur quel tty je veux qu'il s'affiche RestartSec=10 # si mon script est killer systemd le relancera automatiquement toutes les 10ms [Install] WantedBy=multi-user.target # c'est un script que l'usager demande #obligatoire
En détails :
Description=Afficher mon ip avec systemd
#description de l'unit qu'est-ce que ça fait,etc…
type=idle
#systemd va retarder l'exécution du service jusqu'à ce que tous les autres soient finis
ExecStart=/bin/bash /etc/show_my_ip.sh
#la ligne de commande à éxécuter
StandardOutput=tty
#spécifier ou va la sortie “standard du script” ou peut l'afficher dans les log, un tty ou pas l'afficher du tout
TTYPath=/dev/tty1
#je précise sur quel tty je veux qu'il s'affiche
RestartSec=10
#si mon script est killer, SystemD le relancera automatiquement toutes les 10ms
WantedBy=multi-user.target
# c'est un script que l'usager demande obligatoire
Dernière phase : je modifie les droits de mon script SystemD puis je l'active au démarrage
chmod 755 /etc/systemd/system/show_my_ip.service;systemctl enable show_my_ip
Et voilà ! un petit reboot et à la place de l’écran de login habituel sur le tty1 vous verrez l'exécution de votre script