Mon système (Ubuntu 15.10) a un bug: j'ai activé "Exiger mon mot de passe au réveil de la suspension" dans le panneau de configuration "Luminosité et verrouillage", mais il ne demande PAS mon mot de passe, ce qui est incroyablement précaire.
Pour contourner ce problème, j'essaie d'écrire un script qui vivra sous /etc/pm/sleep.d
. Cela devrait être quelque chose comme ceci:
#!/bin/bash
case "${1}" in
hibernate)
# Do nothing
;;
resume|thaw)
su -c "gnome-screensaver-command --lock" MYUSERNAME
;;
esac
Le problème est que cela ne fonctionne pas; les gnome-screensaver-command
échoue avec le message suivant:
** Message: Failed to get session bus: Could not connect: Connection refused
Ensuite, j'ai essayé de changer la commande en:
su MYUSERNAME -c "export $(dbus-launch) && gnome-screensaver-command -l"
Ce qui échoue alors avec:
** Message: Failed to get session bus: The connection is closed
Donc, la question est: quelle serait la bonne façon de procéder?
Vous devez exporter DBUS_SESSION_BUS_ADDRESS
de la machine distante dans votre ssh avant d'utiliser les commandes dbus
Vous devez le trouver localement sur la machine à laquelle vous souhaitez envoyer des commandes à distance en tapant la commande:
set | grep DBUS
Cela vous donnera les coquilles actuelles DBUS_SESSION_BUS_ADDRESS
valeur que vous devez exporter dans votre shell ssh après vous être connecté à la machine distante, puis en profiter.
J'ai pu résoudre ce problème en lisant le bon DBUS_SESSION_BUS_ADDRESS
de la session gnome en cours. Exemple complet:
dbus_address=$(xargs -n 1 -0 < /proc/`pgrep gnome-session`/environ | grep DBUS)
su USERNAME -c "export $dbus_address && gnome-screensaver-command -l"