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 →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:programmation:bash:script:systemd:script-sur-un-vt [25/01/2016 15:55] greenmerlin [Installation] |
doc:programmation:bash:script:systemd:script-sur-un-vt [25/01/2016 20:50] milou [Script de démarrage pour systemd] |
||
---|---|---|---|
Ligne 5: | Ligne 5: | ||
* Commentaires : Depuis le passage de INIT à SystemD certaines choses simple sont devenue plus complexe / comment j'en suis arrivé là : j'ai voulu afficher sur le tty1 de mes machines virtuels leur adresse ipv4 au lien de l'écran de login habituel | * Commentaires : Depuis le passage de INIT à SystemD certaines choses simple sont devenue plus complexe / comment j'en suis arrivé là : j'ai voulu afficher sur le tty1 de mes machines virtuels leur adresse ipv4 au lien de l'écran de login habituel | ||
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) FIXME | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) FIXME | ||
- | * Suivi : {{tag>en-chantier à-tester à-placer}} - FIXME Pour choisir, voir les autres Tags possibles dans [[:atelier:#tags|l'Atelier]]. | + | * Suivi : {{tag>en-chantier à-tester https://debian-facile.org/viewtopic.php?pid=159703#p159703à-placer}} - FIXME Pour choisir, voir les autres Tags possibles dans [[:atelier:#tags|l'Atelier]]. |
* Création par [[user>greenmerlin]] 25/01/2016 | * Création par [[user>greenmerlin]] 25/01/2016 | ||
+ | * Commentaires sur le forum : [[ https://debian-facile.org/viewtopic.php?pid=159703#p159703| Lien vers le forum concernant ce tuto]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
FIXME | FIXME | ||
== Nb : je suis une quiche en mise ne page c'est illisible mdr == | == Nb : je suis une quiche en mise ne page c'est illisible mdr == | ||
===== Introduction ===== | ===== Introduction ===== | ||
- | Depuis le changement d'INIT à SystemD beaucoup d'entre nous on du réapprendre... des choses simple que faisait /etc/inittab à la sauce SystemD. | + | Depuis le changement d'INIT à SystemD beaucoup d'entre nous ont dû réapprendre... des choses simples que faisait /etc/inittab à la sauce SystemD. |
==Le but du tuto : == | ==Le but du tuto : == | ||
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 | 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 | ||
- | <note warning>Vu qu'on bosse sur le Systemd je vous déconseille de bosser en SSH (vous verrez pas les changement lol)</note> | + | <note warning>Vu qu'on bosse sur le Systemd je vous déconseille de bosser en SSH (vous verrez pas les changements lol)</note> |
- | ===== Installation ===== | + | ===== Le script a exécuté ===== |
Bon on commence par le plus simple : | 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 | 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 | ||
- | === Le script a exécuté === | ||
<file bash show_my_ip.sh> | <file bash show_my_ip.sh> | ||
- | #bin/sh | + | #! /bin/sh |
clear | clear | ||
while true; | while true; | ||
Ligne 37: | Ligne 37: | ||
<note important>ne pas oublier de le rendre éxécutable --> chmod +x mon_script.sh</note> | <note important>ne pas oublier de le rendre éxécutable --> chmod +x mon_script.sh</note> | ||
ensuite vu que je veux afficher ce script sur mon tty1 il va falloir que je dise à SystemD d’arrêter de lancer agetty FIXME(expliquer) sur le tty1 | ensuite vu que je veux afficher ce script sur mon tty1 il va falloir que je dise à SystemD d’arrêter de lancer agetty FIXME(expliquer) sur le tty1 | ||
- | === Configuration de SystemD === | + | ===== Configuration de SystemD ===== |
- | == Avant == | + | === Avant === |
sur **INIT** il suffisait d'éditer l'inittab et de remplacer | sur **INIT** il suffisait d'éditer l'inittab et de remplacer | ||
<code>1:2345:respawn:/sbin/mingetty tty1</code> | <code>1:2345:respawn:/sbin/mingetty tty1</code> | ||
par | par | ||
<code>1:2345:respawn:/etc/bin/mon_script.sh</code> | <code>1:2345:respawn:/etc/bin/mon_script.sh</code> | ||
- | == Maintenant == | + | === Maintenant === |
- | 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). | + | Maintenant avec SystemD, un seul getty est lancé par défaut. Si vous vous déplacez sur un autre tty(Ctr+Alt+F2 par exemple), getty sera lanceé ici (de manière interactive). |
- | pour modifier ce comportement par défault de **SystemD** il faut éditer le fichier <code>/etc/systemd/logind.conf</code> | + | Pour modifier ce comportement par défaut de **SystemD** il faut éditer le fichier <code>/etc/systemd/logind.conf</code> |
- | Puis dé-commenter NAutoVTs=6 et placer sa valeur à zero. | + | Puis dé-commenter NAutoVTs=6 et placer sa valeur à zéro. |
ça devrait vous donner un fichier comme ça | ça devrait vous donner un fichier comme ça | ||
<file config /etc/systemd/logind.conf> | <file config /etc/systemd/logind.conf> | ||
Ligne 66: | Ligne 66: | ||
... | ... | ||
</file> | </file> | ||
- | ensuite on lui dit de démarrer quand même un login sur le tty2 pour ce faire : | + | Ensuite on lui dit de démarrer quand même un login sur le tty2, pour ce faire : |
- | <code=root>systemctl disable getty@tty1.service;systemctl enable getty@tty2.service</code> | + | <code root>systemctl disable getty@tty1.service</code> |
- | Dernière phase, il va falloir créer un script de démarrage pour SystemD afin de lancer notre script sur le tty1 | + | Puis : |
- | <note tip>cela correspondait aux scripts présent sous /etc/init.d/ sous INIT</note> | + | <code root> systemctl enable getty@tty2.service</code> |
+ | ===== Script de démarrage pour systemd ===== | ||
+ | Il va falloir créer un script de démarrage pour SystemD afin de lancer notre script sur le tty1 | ||
+ | <note tip>cela correspondait aux scripts présents sous /etc/init.d/ sous INIT</note> | ||
<file config /etc/systemd/system/show_my_ip.service> | <file config /etc/systemd/system/show_my_ip.service> | ||
[Unit] | [Unit] | ||
Ligne 75: | Ligne 78: | ||
[Service] | [Service] | ||
- | type=idle #systemd va retarder l'exécution du service jusqu'à ce que tous les autres soient finis | + | type=idle |
- | ExecStart=/bin/bash /etc/show_my_ip.sh #la ligne de commande à éxécuter | + | ExecStart=/etc/bin/show_my_ip.sh |
- | 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 | + | StandardOutput=tty |
- | TTYPath=/dev/tty1 #je précise sur quel tty je veux qu'il s'affiche | + | TTYPath=/dev/tty1 |
- | RestartSec=10 # si mon script est killer systemd le relancera automatiquement toutes les 10ms | + | RestartSec=10 |
[Install] | [Install] | ||
- | WantedBy=multi-user.target # c'est un script que l'usager demande #obligatoire | + | WantedBy=multi-user.target |
</file> | </file> | ||
En détails : | En détails : | ||
<code>Description=Afficher mon ip avec systemd</code> #description de l'unit qu'est-ce que ça fait,etc... | <code>Description=Afficher mon ip avec systemd</code> #description de l'unit qu'est-ce que ça fait,etc... | ||
<code>type=idle</code> #systemd va retarder l'exécution du service jusqu'à ce que tous les autres soient finis | <code>type=idle</code> #systemd va retarder l'exécution du service jusqu'à ce que tous les autres soient finis | ||
- | <code>ExecStart=/bin/bash /etc/show_my_ip.sh</code> #la ligne de commande à éxécuter | + | <code>ExecStart=/bin/bash /etc/show_my_ip.sh</code> #la ligne de commande à exécuter |
- | <code>StandardOutput=tty</code> #spécifier ou va la sortie "standard du script" ou peut l'afficher dans les log, un tty ou pas l'afficher du tout | + | <code>StandardOutput=tty</code> #spécifier où va la sortie "standard du script" ou peut l'afficher dans les log, un tty, ou pas l'afficher du tout |
<code>TTYPath=/dev/tty1</code> #je précise sur quel tty je veux qu'il s'affiche | <code>TTYPath=/dev/tty1</code> #je précise sur quel tty je veux qu'il s'affiche | ||
<code>RestartSec=10</code> #si mon script est killer, SystemD le relancera automatiquement toutes les 10ms | <code>RestartSec=10</code> #si mon script est killer, SystemD le relancera automatiquement toutes les 10ms |