Ce script simple affichera une notification Zenity lorsque l'utilisateur se connectera:
case "$PAM_TYPE" in
'open_session' )
if [ "$PAM_SERVICE" = "lightdm" ] ; then
DISPLAY=:0 Sudo -u $PAM_USER notify-send "Hello there!" "Hello"
else
echo "Hello there!"
fi
;;
esac
Cependant, cela ne fonctionnera que si la variable DISPLAY est en fait 0. Et ne fonctionnera pas pour les connexions terminales ou distantes (ssh) (évidemment, l'écho semble aller nulle part). Que puis-je faire à ce sujet?
J'ai besoin d'un moyen pour:
Il existe un moyen plus simple d'envoyer des notifications à la connexion (sans connaître votre variable DISPLAY ou utiliser la commande tty
pour identifier votre terminal).
Afin d'envoyer une notification lors du démarrage de GNOME ou d'un autre environnement de bureau, vous devez créer /etc/xdg/autostart/foobar.desktop
fichier qui appelle votre script avec notify-send "Hello there!" "Hello"
. Vérifier /etc/xdg/autostart/
pour des exemples. Vous pouvez faire une copie de l'existant .desktop
fichier, renommez-le et modifiez-le selon vos besoins. Vous pouvez également ajouter X-GNOME-Autostart-Delay=XX
paramètre pour définir XX
secondes de délai pour votre tâche. Si vous devez l'ajouter uniquement pour l'utilisateur sélectionné, utilisez ~/.config/autostart/
de cet utilisateur pour placer votre .desktop
fichier et vérifiez avec gnome-session-properties
que ce lanceur est actif.
Pour envoyer la notification sur la connexion au terminal ou ssh, vous pouvez utiliser le script placé dans /etc/profile.d/
ou envoyer cette notification, en ajoutant echo "My Message"
à /etc/bash.bashrc
directement. Les deux sont appelés depuis /etc/profile
et sera exécuté à chaque connexion au shell interactif, que ce soit un terminal virtuel ou une connexion ssh. Pour l'utilisateur sélectionné, utilisez ~/.bash_login
de cet utilisateur et y mettre le message souhaité. Remarque: utilisation de /etc/bash.bashrc
et ~/.bash_login
est logique si le shell bash
par défaut est utilisé; si l'utilisateur appelle un autre Shell, par exemple /bin/sh/
, ces fichiers seront ignorés.