Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 27/01/2018, à 18:28

selli

[Resolu]Exécuter une Commande a l'extinction et au reboot du pc

Bonjour,
Serait-il possible qu'une commande "bash /home/user/start-color.sh" puisse s'effectuer quand j'éteins ou que je redémarre mon pc.
Parce qu'actuellement je l'effectue avec un raccourci clavier mais parfois j'oublie donc je voudrais qu'elle se fasse toute seule sans avoir à y penser.
Il faut que cette commande s'effectue juste avant que le bureau disparaisse et que le pc s'éteint ou reboot.
Je ne sais pas si cela est possible mais si oui et que vous savez comment faire ça serait bien sympathique tongue
Cordialement.

OS : Ubuntu 16.04 64Bits.

Dernière modification par selli (Le 02/08/2018, à 23:41)

Hors ligne

#2 Le 27/01/2018, à 22:43

metalux

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

Bonjour selli,
Que fais ce script exactement? Pourquoi doit-il se lancer juste avant que le bureau disparaisse?
je crois qu'il faudrait que tu regardes du côté de systemd mais tu ne donnes pas assez de détail pour savoir si c'est exactement ça qu'il te faut.

Hors ligne

#3 Le 27/01/2018, à 22:52

selli

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

Bonsoir metalux,
Cette commande exécute un .sh avec ceci dedans:

#!/bin/sh
cd /home/user/logitech.g19 && sudo -S python main.py <<< password
exit 0

Elle permet a mon clavier d'activer le rétroéclairage pendant le boot ce qui me permet à moi de pouvoir taper sur mon clavier et voir les touches pendant la nuit ou tout est éteint tongue
Sinon si je n'active pas je me retrouve avec un clavier tout noir et comme mes fonds écran sont foncés lol j'y vois plus rien.
Donc elle doit être exécuter avant que le pc s'éteigne sinon c'est fichu.

Alors je ne sais pas ce qu'il y a dans ce "main.py" je ne sais pas non plus sur quoi il agit ou ce qu'il réinitialise mais il me dépanne bien.
Ce que contient le Fichier "main.py"

from logitech.g19 import G19
from logitech.applets.simple_bg_light.simple_bg_light import SimpleBgLight
from logitech.applets.simple_display_brightness.simple_display_brightness \
        import SimpleDisplayBrightness
from logitech.applets.xplanet.xplanet import Xplanet

import time

if __name__ == '__main__':
    lg19 = G19(True)
    lg19.start_event_handling()
    try:
        bgLight = SimpleBgLight(lg19)
        lg19.add_applet(bgLight)

        xplanet = Xplanet(lg19)
        lg19.add_applet(xplanet)

        displayBrightness = SimpleDisplayBrightness(lg19)
        lg19.add_applet(displayBrightness)
        while True:
            time.sleep(10)
    finally:
        xplanet.stop()
        lg19.stop_event_handling()

Note: Mon Pc est une Tour pas un Portable et mon Clavier c'est une Logitech G19.
J''ai tout qui est installé(Gnome15) mais depuis le passage à Ubuntu 16.04 il est ce petit souci que je n'ai jamais pu résoudre à part par cette manip.
Parce qu'avant en 14.04 le clavier restait éclairé pendant le Boot.

Dernière modification par selli (Le 27/01/2018, à 23:12)

Hors ligne

#4 Le 27/01/2018, à 23:22

metalux

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

Voici une piste:
Créer un service logitech.service

[Unit]
Description=[b]blablabla ce que fais ton script[/b]

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=[b]chemin vers ton script[/b]

[Install]
WantedBy=multi-user.target

Ensuite il faut lancer ton service et l'autoriser au démarrage:

sudo systemctl start logitech.service
sudo systemctl enable logitech.service

Ou j'ai un doute, c'est concernant la commande sudo. Est-ce un script python que tu as récupéré et que tu as fais un script bash pour le lancer ou est-ce quelque chose que tu as fais toi-même? S'il s'agit d'un script récupéré, si tu pouvais m'indiquer le lien que je vois comment ça fonctionne.
Je ne repasserai sans doute pas avant demain soir au plus tôt mais déjà tu as les bonnes pistes.
Pour systemd, il y a plusieurs manières de faire, le plus simple est peut-être encore de placer ton script dans /lib/systemd/system-shutdown.
Voici une discussion que j'avais ouverte si elle peut t'inspirer sur les différentes façon de procéder et de trouver quelque chose qui te convient:
https://forum.ubuntu-fr.org/viewtopic.php?id=2019976

Hors ligne

#5 Le 28/01/2018, à 00:02

selli

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

Est-ce un script python que tu as récupéré et que tu as fais un script bash pour le lancer ... Oui il était dans les fichiers pour le clavier pour Ubuntu.
Que tu peux Récupérer à ce lien ci-dessous:
https://github.com/MultiCoreNop/Logitec … nux-Daemon

Gnome15
=======

A set of tools for configuring the Logitech G15 keyboard.

Contains pylibg19, a library providing support for the Logitech G19 until there
is kernel support available. It was based "Logitech-G19-Linux-Daemon" [1],
the work of "MultiCoreNop" [2].

1. http://github.com/MultiCoreNop/Logitech-G19-Linux-Daemon
2. http://github.com/MultiCoreNop

Le Logiciel complet pour mon Clavier G19:
https://github.com/Huskynarr/gnome15

Bon j'ai fait ce que tu m'as conseillé un fichier "logitech.service" avec ceci dedans:

Unit]
Description=[b]Boot Keyboard Backlight Colour[/b]

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=[b]cd /home/user/logitech.g19 && sudo -S python main.py <<< password[/b]

[Install]
WantedBy=multi-user.target

J'ai lancé la commande:

sudo systemctl start logitech.service

Et ça me dit:

Failed to start logitech.service: Unit logitech.service not found.

J'ai essayé de lancer la commande en étant dans le Dossier:

cd /lib/systemd/system-shutdown && sudo systemctl start logitech.service
Failed to start logitech.service: Unit logitech.service not found

J'ai essayé la commande aussi avec mon Bash:

[code]Unit]
Description=[b]Boot Keyboard Backlight Colour[/b]

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=[b]bash /home/user/start-color.sh[/b]

[Install]
WantedBy=multi-user.target[/code]

Pareil:

Failed to start logitech.service: Unit logitech.service not found.

Je vois pas ce que je fais de mal.

PS: Si une personne à sa petite idée surtout qu'il ne se gêne pas de participer .... Vous êtes tous les bienvenus plus on est de fou plus on rit big_smile

Dernière modification par selli (Le 28/01/2018, à 00:34)

Hors ligne

#6 Le 28/01/2018, à 08:43

metalux

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

Il manque le crochet au début de Unit:
[Unit] au lieu de Unit]
Lors de la rédaction du message, j'ai mis des balises caratères gras, à supprimer dans le script systemd. Il faut placer celui-ci dans /etc/systemd/system.

[Unit]
Description=blablabla ce que fais ton script

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=chemin vers ton script

[Install]
WantedBy=multi-user.target

Plutôt que de lancer ton script python avec sudo, n'y-a-t-il pas moyen de le mettre dans un chemin de $PATH comme /usr/local/bin par exemple? password, ça correspond à quoi? Est-ce pour passer ton mdp à la commande sudo? Si oui, alors tu peux te passer de tout ça, les scripts systemd appartenant à root, sudo n'est plus nécessaire normalement.

Dernière modification par metalux (Le 28/01/2018, à 08:46)

Hors ligne

#7 Le 28/01/2018, à 13:23

selli

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

Bonjour metalux,
Pour le Crochet c'était bon c'est moi en copiant sur le forum qui l'ai oublié tongue
J'ai enlevé les code en Gras.
J'ai déplacé vers etc/systemd/system.
Quand je fais la commande:

sudo systemctl start logitech.service

J'ai ceci:

Failed to start logitech.service: Unit logitech.service is not loaded properly: Invalid argument.
See system logs and 'systemctl status logitech.service' for details.

Je ne trouve pas l'emplacement du fichier "System Log" pour y jeter un œil.
Oui "Password" correspond à la commande car dans le fichier .sh il est utile ça m'évite de le taper dans un terminal.
Pour le $PATH je ne m'y connais pas assez pour te donner un avis sur la Question.

En tout cas merci pour l'attention que tu porte à mon problème wink
Cordialement.

Mon fichier logitech.service actuel est comme ceci:

[Unit]
Description=Boot Keyboard Backlight Colour

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=bash /home/moi/start-color.sh

[Install]
WantedBy=multi-user.target

Edit:
J'ai pu faire la commande:

systemctl status logitech.service

Et ça donne ça:

:~$ systemctl status logitech.service
● logitech.service - Boot Keyboard Backlight Colour
   Loaded: error (Reason: Invalid argument)
   Active: inactive (dead)
janv. 28 12:14:05 moi systemd[1]: [/etc/systemd/system/logitech.service:7] Executable path is not absolute, ignoring: bash /home/moi/start-color.sh
janv. 28 12:14:05 moi systemd[1]: logitech.service: Service lacks both ExecStart= and ExecStop= setting. Refusing.
janv. 28 15:28:56 moi systemd[1]: [/etc/systemd/system/logitech.service:7] Executable path is not absolute, ignoring: bash /home/moi/start-color.sh
janv. 28 15:28:56 moi systemd[1]: logitech.service: Service lacks both ExecStart= and ExecStop= setting. Refusing.

Dernière modification par selli (Le 28/01/2018, à 16:54)

Hors ligne

#8 Le 28/01/2018, à 16:57

metalux

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

Finalement ce que tu souhaites, c'est lancer main.py à l'extinction.
J'essaierais ceci:

[Unit]
Description=Boot Keyboard Backlight Colour

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=/usr/bin/python /home/user/logitech.g19/main.py

[Install]
WantedBy=multi-user.target

Pour les messages d'erreurs, si tu pouvais les poster si ça ne fonctionne pas:

systemctl status logitech.service

Hors ligne

#9 Le 28/01/2018, à 17:05

selli

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

Ouh Pinaise t'es un tueur big_smile
Il n'y a pas de message d'erreur et apparemment il est Actif:

~$ systemctl status logitech.service
● logitech.service - Boot Keyboard Backlight Colour
   Loaded: loaded (/etc/systemd/system/logitech.service; enabled; vendor preset:
   Active: active (exited) since dim. 2018-01-28 16:02:45 CET; 20s ago

Je vais faire une redémarrage pour voir si la commande s'effectue et si ça agit sur le clavier.
Je Reviens....

Hors ligne

#10 Le 28/01/2018, à 17:38

selli

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

Bon De retour et on dirait que ça n’exécute pas le fichier main.py.
Il n'y a pas d'erreur mais il ne se passe rien de plus au reboot ou à l’extinction du pc.
Peut être que la commande doit s'exécuter au moment même du reboot et il faudrait qu'elle s'execute un peu avant je ne sais pas.

Hors ligne

#11 Le 28/01/2018, à 18:10

metalux

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

As-tu penser à passer le systemcl enable pour l'activer au démarrage? Consulte la documentation de systemd pour arriver à ce que tu souhaites:
https://www.freedesktop.org/software/sy … rvice.html
Sinon essaye avec ExecStart= au lieu de ExecStop= (et supprimer sans doute RemainAfterExit=true dans ce cas).
Après chaque modification il faut recharger le démon:

sudo systemctl daemon-reload

Hors ligne

#12 Le 28/01/2018, à 18:16

selli

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

Oui je reload à chaque fois de toute façon il me dit de le faire dans le Terminal avant de Start.
Oui je fais les deux commandes "Start & Enable"

Hors ligne

#13 Le 28/01/2018, à 18:26

metalux

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

Et avec ExecStart=?

Hors ligne

#14 Le 28/01/2018, à 18:34

selli

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

Non plus sad

Hors ligne

#15 Le 28/01/2018, à 18:51

metalux

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

Fais plusieurs essais pour voir ce qui fonctionne. Essaye aussi en remplaçant Type=oneshot par Type=simple ou Type=idle. A tester:

[Unit]
Description=Boot Keyboard Backlight Colour

[Service]
Type=simple
ExecStart=/usr/bin/python /home/user/logitech.g19/main.py

[Install]
WantedBy=multi-user.target
[Unit]
Description=Boot Keyboard Backlight Colour
After=multi-user.target

[Service]
Type=idle
ExecStart=/usr/bin/python /home/user/logitech.g19/main.py

[Install]
WantedBy=multi-user.target

N'oublies pas de vérifier le status:

sudo systemctl status logitech.service

Tu ne dois pas être loin, des fois ça tient à peu de chose wink

Hors ligne

#16 Le 28/01/2018, à 19:43

selli

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

Toutes les commandes me donnent ceci:

● logitech.service
   Loaded: loaded (/etc/systemd/system/logitech.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since dim. 2018-01-28 18:41:49 CET; 7s ago
 Main PID: 19905 (code=exited, status=1/FAILURE)

janv. 28 18:41:49 jah python[19905]:   File "/home/moi/logitech.g19/logitech/g19.py", line 18, in __init__
janv. 28 18:41:49 jah python[19905]:     self.__usbDevice = G19UsbController(resetOnStart)
janv. 28 18:41:49 jah python[19905]:   File "/home/moi/logitech.g19/logitech/g19.py", line 309, in __init__
janv. 28 18:41:49 jah python[19905]:     iface1 = config.interfaces[1][0]
janv. 28 18:41:49 jah python[19905]: IndexError: list index out of range
janv. 28 18:41:49 jah systemd[1]: logitech.service: Main process exited, code=exited, status=1/FAILURE
janv. 28 18:41:49 jah systemd[1]: logitech.service: Unit entered failed state.
janv. 28 18:41:49 jah systemd[1]: logitech.service: Failed with result 'exit-code'.
janv. 28 18:41:53 jah systemd[1]: [/etc/systemd/system/logitech.service:1] Assignment outside of section. Ignoring.
janv. 28 18:41:53 jah systemd[1]: [/etc/systemd/system/logitech.service:2] Assignment outside of section. Ignoring.

Il n'y a que celle-ci pour le moment:

[Unit]
Description=Boot Keyboard Backlight Colour

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=/usr/bin/python /home/user/logitech.g19/main.py

[Install]
WantedBy=multi-user.target

Qui donne ceci:

:~$ systemctl status logitech.service
● logitech.service - Boot Keyboard Backlight Colour
   Loaded: loaded (/etc/systemd/system/logitech.service; enabled; vendor preset:
   Active: active (exited) since dim. 2018-01-28 18:44:50 CET; 8s ago
 Main PID: 31315 (code=exited, status=1/FAILURE)

janv. 28 18:44:50 jah systemd[1]: Started Boot Keyboard Backlight Colour.

Mais qui n'a pas d'influance sur le fichier main.py.

Dernière modification par selli (Le 28/01/2018, à 19:47)

Hors ligne

#17 Le 28/01/2018, à 20:25

metalux

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

Pour le dernier que tu mentionnes dans la réponse précédente, as-tu essayé avec RemainAfterExit=false ou RemainAfterExit=no?
Ajoute à la section [Unit] After=multi-user.target pour voir si c'est mieux.
Pour ton raccourci clavier, si tu le fais avant extinction, le clavier s'allume au prochain démarrage ou tu le fais au démarrage?
Pour les autres, ce sont à priori des erreurs python, mais pourquoi lorsque le script lancé par systemd planterait et pas autrement? Mystère... hmm
Pour un audit plus approfondi il y a apparemment la commande systemd-analyze verify. Je suppose qu'il faut l'utiliser de cette manière:

systemd-analyze verify logitech.service

bien que je n'en suis pas sûr, n'ayant jamais eu besoin de l'utiliser.

Dernière modification par metalux (Le 28/01/2018, à 20:33)

Hors ligne

#18 Le 28/01/2018, à 20:33

selli

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

Je le fais avant l'extinction pour que le clavier puisse être éclairé pendant le Boot.
Sinon il reste tout noir et le rétroéclairage s'active qu'une fois sur le Bureau et que le logiciel "Gnome15" démarre.

Hors ligne

#19 Le 28/01/2018, à 20:34

metalux

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

J'ai édité mon message précédent, fais les différents tests. On doit pas être loin, mais là je vois pas trop. Il faudrait qu'un expert en systemd passe par là.

Hors ligne

#20 Le 28/01/2018, à 20:45

metalux

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

Je crois que j'ai trouvé l'erreur. Les scripts systemd sont bien faits je crois, du moins ceux qui te répondent:

janv. 28 18:41:49 jah python[19905]:   File "/home/moi/logitech.g19/logitech/g19.py", line 18, in __init__
janv. 28 18:41:49 jah python[19905]:     self.__usbDevice = G19UsbController(resetOnStart)
janv. 28 18:41:49 jah python[19905]:   File "/home/moi/logitech.g19/logitech/g19.py", line 309, in __init__
janv. 28 18:41:49 jah python[19905]:     iface1 = config.interfaces[1][0]
janv. 28 18:41:49 jah python[19905]: IndexError: list index out of range
janv. 28 18:41:49 jah systemd[1]: logitech.service: Main process exited, code=exited, status=1/FAILURE
janv. 28 18:41:49 jah systemd[1]: logitech.service: Unit entered failed state.
janv. 28 18:41:49 jah systemd[1]: logitech.service: Failed with result 'exit-code'.
janv. 28 18:41:53 jah systemd[1]: [/etc/systemd/system/logitech.service:1] Assignment outside of section. Ignoring.
janv. 28 18:41:53 jah systemd[1]: [/etc/systemd/system/logitech.service:2] Assignment outside of section. Ignoring.

metalux a écrit :

Pour les autres, ce sont à priori des erreurs python, mais pourquoi lorsque le script lancé par systemd planterait et pas autrement? Mystère...

Regarde ce lien, il s'agit d'un problème similaire. L'erreur c'est: IndexError: list index out of range
Ton fichier main.py, ne se trouverait-il pas dans un répertoire qui contient d'autres fichiers dont il aurait besoin?

Hors ligne

#21 Le 28/01/2018, à 20:46

selli

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

Cette commande:

[Unit]
Description=Boot Keyboard Backlight Colour
After=multi-user.target

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=/usr/bin/python /home/user/logitech.g19/main.py

[Install]
WantedBy=multi-user.target

Donne:

● logitech.service - Boot Keyboard Backlight Colour
   Loaded: loaded (/etc/systemd/system/logitech.service; enabled; vendor preset: enabled)
   Active: active (exited) since dim. 2018-01-28 19:38:27 CET; 4min 25s ago

janv. 28 19:38:27 jah systemd[1]: Started Boot Keyboard Backlight Colour.
janv. 28 19:40:06 jah systemd[1]: logitech.service: Service has no ExecStart= setting, which is only allowed for RemainAfterExit=yes services. Refusing.
janv. 28 19:41:19 jah systemd[1]: Started Boot Keyboard Backlight Colour.
janv. 28 19:42:43 jah systemd[1]: Started Boot Keyboard Backlight Colour.

Hors ligne

#22 Le 28/01/2018, à 21:02

selli

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

"Regarde ce lien, il s'agit d'un problème similaire. L'erreur c'est: IndexError: list index out of range
Ton fichier main.py, ne se trouverait-il pas dans un répertoire qui contient d'autres fichiers dont il aurait besoin?"

C'est possible mais alors ou la je ne saurais Dire sad

Hors ligne

#23 Le 28/01/2018, à 21:13

metalux

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

cd /home/user/logitech.g19

Qu'y a-t-il dans ce dossier? Si il y a des fichiers nécessaires à main.py, l'erreur vient de là. Il faudrait corriger la partie python en indiquant le chemin en entier mais ça je ne sais pas le faire. Un spécialiste de python dans les parages? Sinon fais une demande spécifique concernant cette erreur.
Une autre solution est effectivement de lancer un script bash, toujours avec l'un des scripts systemd qui te ramènent l'erreur IndexError: list index out of range.
Tu remplaces la commande par:

/usr/bin/bash /home/user/ton_script.sh

et dans ton script:

#!/bin/bash
cd /home/user/logitech.g19 && python main.py
exit 0

Dernière modification par metalux (Le 28/01/2018, à 21:14)

Hors ligne

#24 Le 28/01/2018, à 21:57

selli

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

J'ai lancé la commande par le terminal directement ça me donne la même chose out of range:

:~$ cd /home/jah/logitech.g19 && python main.py
Traceback (most recent call last):
  File "main.py", line 10, in <module>
    lg19 = G19(True)
  File "/home/jah/logitech.g19/logitech/g19.py", line 18, in __init__
    self.__usbDevice = G19UsbController(resetOnStart)
  File "/home/jah/logitech.g19/logitech/g19.py", line 309, in __init__
    iface1 = config.interfaces[1][0]
IndexError: list index out of range

Sinon j'ai hébergé le dossier logitech.g19 si tu veux kjeter un oeil dedans.
Lien du Dossier .rar: http://dl.free.fr/hWGZtiJnL

Hors ligne

#25 Le 28/01/2018, à 22:07

metalux

Re : [Resolu]Exécuter une Commande a l'extinction et au reboot du pc

As-tu réessayé avec ton script associé à ton raccourci clavier? Tu l'avais essayé avec le script systemd qui est non fonctionnel au début. Depuis tu en as qui fonctionnent normalement, ceux qui lance python avec une erreur.
j'ai téléchargé l'archive, je regarde dans les jours à venir si tu n'y es pas arrivé.
qu'est-ce que la commande de ton raccourci clavier donne comme retour en terminal?

Hors ligne