Je veux exécuter un script avant de me déconnecter de ma session GNOME, pour m'avertir si j'ai oublié une clé USB branchée sur la machine.
Cependant, toutes les solutions que j'ai trouvées ne me suffisent pas:
Cette question similaire suggère de modifier le
/etc/gdm/PostSession/Default
fichier, mais je n'ai pas les autorisations pour le faire. (Et le fichier est actuellement vide sur ma machine, donc il n'y a pas de hooks existants pour en profiter)J'ai également trouvé ce message suggérant une solution de contournement mais, selon la première réponse, cela ne fonctionne pas si j'arrête l'ordinateur au lieu de me déconnecter uniquement.
Réponses:
Comme vous utilisez Gnome, vous pouvez utiliser le script Python ci-dessous, adapté de celui que vous avez mentionné.
Il a besoin d'une déconnexion Gnome (ie
gnome-session-quit
) (ou d'un arrêt gnome), celui qui se produit lorsque nous utilisons la déconnexion dans l'interface graphique. AFAIK aucun processus ne peut bloquer un arrêt par la commandesudo shutdown -h 0
ou parsudo poweroff
. Lorsqu'ilshutdown
est exécuté, il donne SIGTERM à tous les processus et leur donne quelques secondes pour quitter (après avoir exécuté certains scripts qui ne peuvent pas être modifiés par des utilisateurs non root). Si ce n'est pas le cas, les processus sont tués par SIGKILL.C'est la procédure étape par étape de la
gnome_save_yourself
méthode. Faisons un test.Enregistrez le code suivant sous
~/Desktop/execute_script_on_shutdown.sh
(From http://www.linuxquestions.org/questions/linux-desktop-74/gnome-run-script-on-logout-724453/#post3560301 )Rendez-le exécutable:
Enregistrez les éléments suivants sous
~/Desktop/shutdown_script.sh
Exécutez le script principal
Maintenant, vous sentez que le script attend quelque chose
Recherchez un fichier nommé
AAAAAAAAAAAAAAAAAAAAAAAAAAA
sur votre bureau.Si vous voyez le fichier, tout est OK. Vous pouvez maintenant modifier le
shutdown_script.sh
pour l'adapter à vos besoins. N'oubliez pas non plus d'exécuter laexecute_script_on_shutdown.sh
connexion (ou de la rendre exécutable automatiquement au démarrage).la source
Si vous voulez que votre session se bloque en toutes circonstances, vous avez besoin des privilèges root. Il n'y a aucun moyen de contourner cela. La racine utilisateur peut toujours
kill -9
vos processus. Je suis surpris qu'un arrêt ne fasse pas émettre par le gnome le signal "sauve-toi toi-même". Je pense également que les scripts "PostSession" ne sont exécutés qu'après la fin de gnome-session et (je crois) juste avant la fin de Xserver, ce qui signifie que ce n'est pas l'endroit où vous souhaitez afficher un avertissement qui devrait apparaître à l'écran (si J'ai bon).Ce qui peut fonctionner, c'est une application Gnome qui a) réagit à l'événement gnome «sauvez-vous» ET b) réagit sur SIGTERM de la même manière qu'il réagit à «vous-même». Au-delà de cela, vous ne pouvez pas faire grand-chose, en particulier sans privilèges root.
Cependant, vous pouvez résoudre le problème non root: écrivez un script PostSession qui fait ce que vous voulez et suggérez à quelqu'un avec des privilèges root de le déployer sur toutes les machines car c'est un outil sensé qui aide beaucoup les utilisateurs. Habituellement, les gars avec des privilèges root sont payés pour rendre / garder les utilisateurs heureux. :-)
Quel est le problème que vous essayez de résoudre? Pourquoi ne pas vous déconnecter de votre session quand une clé USB est branchée?
Vous pouvez avoir un client dbus qui affiche "N'oubliez pas de débrancher l'appareil!" lorsque gvfs annonce le démontage d'un système de fichiers sur un périphérique USB. Mais je ne sais pas si cela fonctionne ou sert même vos objectifs.
la source
J'ai finalement réussi à tester le script Python que j'ai mentionné comme deuxième option dans ma question. Il se trouve qu'il fait le travail en demandant de fermer aussi bien, et pas seulement au redémarrage.
la source