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 19:45] enicar [Installation] |
doc:programmation:bash:script:systemd:script-sur-un-vt [05/02/2016 09:17] smolski [Comment lancer un script sur une console virtuelle en utilisant systemd] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Comment lancer un script sur une console virtuel en utilisant systemd ====== | + | ====== Comment lancer un script sur une console virtuelle en utilisant systemd ====== |
- | * Objet : Petit Tuto expliquant comment afficher un script sur une console virtuel | + | * Objet : Petit Tuto expliquant comment afficher un script sur une console virtuelle |
- | * Niveau requis : avisé | + | * Niveau requis : {{tag>avisé}} |
- | * 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 simples sont devenues plus complexes / comment j'en suis arrivé là : j'ai voulu afficher sur le tty1 de mes machines virtuelles leur adresse ipv4 au lieu 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 | + | * Suivi : {{tag>à-tester à-placer}} |
- | * Suivi : {{tag>en-chantier à-tester à-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 | ||
- | FIXME | + | * Commentaires sur le forum : [[ https://debian-facile.org/viewtopic.php?pid=159703| Lien vers le forum concernant ce tuto]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) |
- | == 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> |
+ | |||
+ | ===== Le script à exécuter ===== | ||
- | ===== Installation ===== | ||
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 33: | Ligne 30: | ||
done | done | ||
</file> | </file> | ||
- | 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 | + | Je ne commente pas le script car c'est pas le but du tuto(si vous voulez plus d'explication --> MP). |
- | <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 | + | Ce script Bash va afficher en continue l'adresse ipv4 des différentes interfaces réseau. |
- | === Configuration de SystemD === | + | <note important>ne pas oublier de le rendre éxécutable : <code user>chmod +x mon_script.sh</code></note> |
- | == Avant == | + | 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 ===== | ||
+ | === 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 65: | ||
... | ... | ||
</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</code> | <code root>systemctl disable getty@tty1.service</code> | ||
Puis : | Puis : | ||
<code root> systemctl enable getty@tty2.service</code> | <code root> systemctl enable getty@tty2.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 | + | ===== Script de démarrage pour systemd ===== |
- | <note tip>cela correspondait aux scripts présent sous /etc/init.d/ sous INIT</note> | + | |
+ | 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 77: | 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>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>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>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>WantedBy=multi-user.target</code> # c'est un script que l'usager demande **obligatoire** | + | |
- | Dernière phase : | + | * description de l'unit qu'est-ce que ça fait,etc... :<code>Description=Afficher mon ip avec systemd </code> |
- | je modifie les droits de mon script SystemD puis je l'active au démarrage | + | * systemd va retarder l'exécution du service jusqu'à ce que tous les autres soient finis :<code>type=idle </code> |
+ | * la ligne de commande à exécuter :<code>ExecStart=/bin/bash /etc/show_my_ip.sh </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> StandardOutput=tty</code> | ||
+ | * je précise sur quel tty je veux qu'il s'affiche :<code>TTYPath=/dev/tty1 </code> | ||
+ | * si mon script est killer, SystemD le relancera automatiquement toutes les 10ms :<code>RestartSec=10</code> | ||
+ | * c'est un script que l'usager demande **obligatoire** :<code>WantedBy=multi-user.target</code> | ||
+ | |||
+ | Dernière phase : \\ | ||
+ | je modifie les droits de mon script SystemD puis je l'active au démarrage : | ||
<code root>chmod 755 /etc/systemd/system/show_my_ip.service;systemctl enable show_my_ip</code> | <code root>chmod 755 /etc/systemd/system/show_my_ip.service;systemctl enable show_my_ip</code> | ||
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 | 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 | ||
===== Résultat ===== | ===== Résultat ===== | ||
+ | {{https://debian-facile.org/images/file-Reda0b8260517f425575ddbdefef3ed2f.png}} | ||
+ | |||
+ | {{https://debian-facile.org/images/file-R635089f471126a55c82d38bc4b42e173.png?600}} | ||
- | [[http://pix.toile-libre.org/?img=1453733608.png]] |