Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Pour en savoir un peu plus sur l'équipe du forum.

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.

#1 Le 12/11/2017, à 08:18

Crestey

[Résolu] Exécuter script en sortie de veille ou entrée en veille

Bonjour à tous,
J'ai pas mal farfouillé sur google pour répondre à la question.
A chaque fois on suggère de mettre un script sous /etc/apm/resume.d ou bien de rajouter des lignes dans le script existant /etc/apm/resume.d/20alsa, et à chaque fois ça ne marche pas.
Du coup j'ai essayé moi-même pour être sûr que ça ne marche pas:
J'ai ajouté la ligne cp /home/crestey1/toto /home/crestey1/toto1 dans /etc/apm/resume.d/20alsa comme suit :

#!/bin/sh
#
# apmd proxy script for ALSA

cp /home/crestey1/toto /home/crestey1/toto1

[ -x /usr/sbin/alsactl ] || exit 0

case "$1,$2" in
	suspend,*) /usr/sbin/alsactl store && /sbin/alsa suspend ;;
	resume,suspend) /sbin/alsa resume && /usr/sbin/alsactl restore ;;
esac

Et effectivement elle ne s'exécute pas en sortie de veille.
Du coup, j'ai 2 questions
1) Est-ce que le script /etc/apm/resume.d/20alsa contient du code mort ? (qui ne s'exécute jamais)
2) Comment faire pour exécuter un script en sortie de veille ou juste avant d'y rentrer ?

A vous lire

Dernière modification par Crestey (Le 14/11/2017, à 11:14)


Merci à tous

Hors ligne

#2 Le 12/11/2017, à 08:23

Tamarou

Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille

Bonjour,
Vu que la prochaine version de systemd fera aussi le café, tu devrais chercher dans sa direction. La version actuelle contient certainement une commande pour faire cela.

Edit : une piste
https://wiki.archlinux.org/index.php/Po … leep_hooks

Dernière modification par Tamarou (Le 12/11/2017, à 08:25)


Utilisateur d'Archlinux/Gnome-shell, Xubuntu.

Hors ligne

#3 Le 13/11/2017, à 22:24

Crestey

Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille

Merci Tamarou,
En effet grâce à ton lien, j'ai trouvé que pour lancer un script avant mise en veille, il suffit de le placer dans /lib/systemd/system-sleep/. J'ai testé, ça marche.
Par contre, pour avoir une interaction utilisateur avant mise en veille en utilisant zenity par exemple, j'ai l'impression que c'est possible aussi mais ça dépasse un peu mes compétences. Je vais fouiller un peu.

Le besoin c'est par exemple si, lors d'une mise en veille, le système détecte qu'un redémarrage est nécessaire, alors une boite de dialogue s'ouvre pour proposer un reboot.


Merci à tous

Hors ligne

#4 Le 14/11/2017, à 07:54

Tamarou

Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille

interaction utilisateur avant mise en veille en utilisant zenity par exemple,

Un petit tour par ici :
https://help.gnome.org/users/zenity/stable/


Utilisateur d'Archlinux/Gnome-shell, Xubuntu.

Hors ligne

#5 Le 14/11/2017, à 09:21

kholo

Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille

salut,
et pour l’interaction, penser à mettre le bon DISPLAY
par exemple pour cron :

export DISPLAY=:0 && /somedirectory/your_zenity_script.sh

depuis un script en root

env DISPLAY=:0.0 zenity --question...

Hors ligne

#6 Le 14/11/2017, à 09:32

Crestey

Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille

Merci à vous. Du coup je progresse, lentement roll , mais je progresse !

j'ai mis dans /lib/systemd/system-sleep le fichier ActionsApresVeille suivant :

#!/bin/bash

export DISPLAY=:0.0
export XAUTHORITY=/home/crestey2/.Xauthority
notify-send "Bulle affichée après mise en veille"
zenity --info --text "Texte affiché après mise en veille"

Et ça m'affiche bien une bulle notify-send en haut à droite, et une boite de dialogue zenity.
Le problème qu'il me reste à résoudre, c'est que ça le fait avant mise en veille et après aussi.
Or je souhaite une action avant et une autre différente éventuellement après

Dernière modification par Crestey (Le 14/11/2017, à 09:32)


Merci à tous

Hors ligne

#7 Le 14/11/2017, à 09:51

Tamarou

Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille

systemd runs all executables in /usr/lib/systemd/system-sleep/, passing two arguments to each of them:

    Argument 1: either pre or post, depending on whether the machine is going to sleep or waking up
    Argument 2: suspend, hibernate or hybrid-sleep, depending on which is being invoked

As-tu précisé l'argument 1 ? pre ou post

Dernière modification par Tamarou (Le 14/11/2017, à 09:52)


Utilisateur d'Archlinux/Gnome-shell, Xubuntu.

Hors ligne

#8 Le 14/11/2017, à 09:52

MicP

Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille

Bonjour

Vu le contenu de la page man de systemd-suspend.service

extrait de 'man systemd-suspend.service' a écrit :
     …will run all executables in /lib/systemd/system-sleep/ and pass two arguments to them.
     The first argument will be "pre", the second either "suspend", "hibernate", or "hybrid-sleep" depending on the chosen action.
     Immediately after leaving system suspend and/or hibernation the same executables are run, but the first argument is now "post".
     …

ton script est donc lancé avec, pour valeur de premier paramètre : pre ou post
Il te faudrait donc tester la valeur de ce premier paramètre.

EDIT : Grilled par Tamarou big_smile qui gagne avec une minute d'avance.

Dernière modification par MicP (Le 14/11/2017, à 09:59)

Hors ligne

#9 Le 14/11/2017, à 09:54

LukePerp

Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille

Crestey a écrit :

J'ai pas mal farfouillé sur google pour répondre à la question.

Bonjour,
Pourquoi veux tu faire ça, dans quel but ? Je demande car on peux faire peut etre ton objectif final autrement qu'avec un script lors de la mise en veille.


Desktop : Ubuntu Mate 14.04 - Intel i5 - 8 Go - Dual boot Windows 7 pour jouer
Laptop ASUS : Ubuntu Mate 16.04 - Intel i3 - 4 Go
Laptop de 1993 : Lubuntu 14.04 - Pentium M - 432 Mo
Regardez ces thèmes pour Linux : ici

Hors ligne

#10 Le 14/11/2017, à 11:12

Crestey

Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille

Merci tamarou. J'ai donc mis écrit le script suivant placé dans  /lib/systemd/system-sleep

#!/bin/bash

export DISPLAY=:0.0
export XAUTHORITY=/home/crestey2/.Xauthority

case $1 in
  pre)
	notify-send "Bulle affichée avant en veille"
        zenity --info --text "Texte affiché avant mise en veille"
	;;
  post)
	notify-send "Bulle affichée après mise en veille"
	zenity --info --text "Texte affiché après mise en veille"
	;;
esac

et ça marche nickel ! smile

LukePerp a écrit :

Pourquoi veux tu faire ça, dans quel but ?

Il y a plusieurs cas où je me suis dit qu'un message avant ou après mise en veille peut être sympa. Mais je ne vais pas me souvenir de tous.
Exemple 1 :
Déjà je n'éteins mon PC quasiment jamais. Que si c'est nécessaire suite à une mise à jour. Je tourne avec xubuntu16.04, et à priori il y a un petit défaut sur l' update notifier qui fait que je ne suis pas informé quand un reboot est nécessaire.
Voir là : https://bugs.launchpad.net/ubuntu/+sour … ug/1246364
Donc je vais faire un script qui va voir la présence du fichier /var/run/reboot-required, et quand je mets en veille, ça me dira qu'un reboot est nécessaire et ça me proposera de rebooter.
Exemple 2 :
Je me suis retrouvé une fois avec un problème de place manquante sur "/", qui m'avait mis dans l'embarras.
Le plus simple est de mettre suffisamment d'espace, c'est sûr.!!!...
Mais j'ai installé des xubuntu chez des amis qui ont des petits disques durs.
Alors en entrée ou sortie de veille, un test qui voit la place qui reste, et en fonction, propose de faire de la place avec un autoremove, ça peut être utile
Exemple 3 :
Une bulle qui dit tout simplement la place qui reste aussi sur le home à chaque sortie de veille, ou donne des infos sur l'identité et la santé de l'ordi, ça peut être sympa aussi.

Dernière modification par Crestey (Le 14/11/2017, à 11:17)


Merci à tous

Hors ligne

#11 Le 14/11/2017, à 12:53

LukePerp

Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille

Bravo à l'auteur du script ! Je l’ai mis dans ma boite à scripts, car j'ai plusieurs idées d'usage.

Si une opération est enclenchée avant la mise en veille, avons-nous la garantie que l'opération sera terminée avant la vraie mise en veille ? Si l'opération déconne, qu'arrive t il à la mise en veille (annulée ou effective) ?

@crestey : ok, je comprends mieux, tes idées sont cohérentes. A ta place je placerai ces évènements quelques secondes après le démarrage de la machine car certains utilisateurs sortent de la mise en veille pour éteindre la machine. Donc demander à l'utilisateur de faire quelque chose au moment d’arrêter la machine, certains ne le feront pas. Mais c'est une autre discussion.

Dernière modification par LukePerp (Le 14/11/2017, à 13:07)


Desktop : Ubuntu Mate 14.04 - Intel i5 - 8 Go - Dual boot Windows 7 pour jouer
Laptop ASUS : Ubuntu Mate 16.04 - Intel i3 - 4 Go
Laptop de 1993 : Lubuntu 14.04 - Pentium M - 432 Mo
Regardez ces thèmes pour Linux : ici

Hors ligne

#12 Le 14/11/2017, à 13:47

Crestey

Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille

LukeePerp a écrit :

Si une opération est enclenchée avant la mise en veille, avons-nous la garantie que l'opération sera terminée avant la vraie mise en veille ?

Je pense que oui. Le système exécute ce script comme n'importe quel script: ligne de code après ligne de code. Typiquement, si tu mets une commande zenity qui te demande de répondre, tant que tu n'as pas répondu, la boite de dialogue est là et attend ta réponse. Et tu peux atttendre 1 heure, ça ne se met pas en veille. Ça s'y mettra dès que tu auras validé le message de la boite de dialogue de zenity.

LukeePerp a écrit :

Si l'opération déconne, qu'arrive t il à la mise en veille (annulée ou effective) ?

Même chose. Tant que le script ne se termine pas, s'il y a une boucle infini par exemple, ça n'ira pas en veille. Mais s'il y a une erreur qui fait quand même passer à l'instruction suivante jusqu'à la fin du script, ça ira en veille.

J'ai un autre exemple qui devrait bien me servir: J'ai un minipc hp qui commande une enceinte bose en bluetooth. Quand je ferme le capot, il se met en veille, c'est très pratique. Mais sur une mise en veille / sortie de veille, le bluetooth pédale dans la choucroutte, et la reconnexion à mon enceinte bose est très laborieuse. Je vais donc essayer de trouver les commandes pour fermer proprement la liaison BT sur mise en veille et la ré-ouvrir proprement quand je sorts de veille.

Dernière modification par Crestey (Le 14/11/2017, à 13:51)


Merci à tous

Hors ligne

#13 Le 14/11/2017, à 23:19

Crestey

Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille

Je viens d'écrire le script qui me permet de reconnecter automatiquement mon enceinte bose en bluetooth. Ça fait des mois que ma bose était infernale à reconnecter après mise en veille. Maintenant, avec ce script, je ferme le capot du minipc, ça s'éteint, je le ré-ouvre, et ça se reconnecte tout seul sans aucune action. Moi content ! smile

#!/bin/bash

export DISPLAY=:0.0
export XAUTHORITY=/home/crestey1/.Xauthority

case $1 in
  pre)
	notify-send "Deconnexion de la Bose" -t 1000
	rfkill block all && rfkill list bluetoot
	sleep 1
	;;
  post)
	notify-send "Connexion de la Bose"
	/etc/init.d/networking restart
	sleep 1	
	rfkill unblock bluetooth
	sleep 1
	rfkill unblock wifi
	sleep 1
	rfkill unblock bluetooth
	sleep 1
	/usr/local/bin/./ConnecteBose
	;;
esac

remarque : il y 2 fois la commande rfkill unblock bluetooth mais c'est volontaire, car ça n'est pris en compte que la 2ème fois. Pourquoi, Mystère !

/usr/local/bin/./ConnecteBose :

#!/usr/bin/expect -f
spawn bluetoothctl
send "connect 04:52:C7:2F:6F:83\r"
sleep 4

Dernière modification par Crestey (Le 14/11/2017, à 23:22)


Merci à tous

Hors ligne

#14 Le 15/11/2017, à 07:35

Tamarou

Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille

Moi content !

If "toi-content" then "nous-aussi-contents" fi. smile

/etc/init.d/networking restart

Là aussi tu peux passer à systemd.

Dernière modification par Tamarou (Le 15/11/2017, à 07:42)


Utilisateur d'Archlinux/Gnome-shell, Xubuntu.

Hors ligne

#15 Le 15/11/2017, à 07:58

Crestey

Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille

Ah ok. Merci Tamarou. Tu veux dire cette commande a son équivalent dans systemd (qui fera bientôt le café), c'est ça ?
Je vais fouiller un peu (avec quand même le secret espoir que tu m'en dises un peu plus).

#!/bin/bash
case toi in
      courageux & disponible)
             M'en dire plus
      fatigué)
             sleep 10000000
             M'en dire plus
      occupé ailleurs)
            no souçaille
            moi remercier toi quand même wink
esac


Merci à tous

Hors ligne