GNU/Linux >> Tutoriels Linux >  >> Linux

Linux :Comment envoyer un message à un utilisateur local connecté à X11 ?

Le xmessage l'outil vous permet de faire exactement cela ; présenter une fenêtre contextuelle aux utilisateurs avec un message texte à l'intérieur.

Exemple :l'utilisateur2 se connecte à une session BASH sur la boîte et émet :

export DISPLAY=':0.0'
xmessage "some message here"

si vous vous connectez à une session TSCH, ce serait quelque chose comme ça :

setenv DISPLAY ':0.0'
xmessage "some message here'

Vous pouvez également envoyer des messages aux sessions de terminal de deux manières :

Utilisation de wall (=avertir tous les [utilisateurs])

À partir de la page de manuel :
Wall affiche le contenu du fichier ou, par défaut, son entrée standard, sur les terminaux de tous les utilisateurs actuellement connectés.

Si vous souhaitez cibler un utilisateur spécifique, utilisez write . Encore une fois, l'homme nous dit :

L'utilitaire d'écriture vous permet de communiquer avec d'autres utilisateurs, en copiant des lignes de votre terminal vers le leur.


En règle générale, les sessions X11 sont généralement démarrées en mode "privé", vous avez donc besoin de l'une des deux choses suivantes :soit, la coopération de user2 pour vous permettre d'accéder à leurs écrans, ou des privilèges de superutilisateur pour "entrer par effraction" sur leurs écrans.

DANGER : N'oubliez pas qu'une fois que vous avez accès à leur écran, vous pouvez également capturer des frappes au clavier (y compris éventuellement des mots de passe) et prendre des captures d'écran. Il s'agit donc d'un risque de sécurité important.

Dans la plupart cas, il est préférable d'utiliser un outil de messagerie ou un programme de chat pour ces choses.

Mises en garde mises à part :

Coopérer

Si user2 veut autoriser user1 pour accéder à son écran, puis d'abord user2 doit émettre une commande comme :

 xhost +si:localuser:user1

Cela pourrait potentiellement être ajouté à un script de démarrage quelconque; Je ne connais pas Fluxbox, mais je suppose qu'il a un rc ou crochet de démarrage de session.

Une fois que cela a été émis, user1 peut alors écrire dans user2 s'affiche, s'il peut le trouver.

Si user2 en est conscient, il peut toujours l'envoyer au user1 d'une autre manière.

Rechercher l'écran d'un autre utilisateur

Sur un poste de travail typique, il est inhabituel d'avoir plus d'un ou deux utilisateurs connectés; dans ce cas, "deviner" que l'affichage que vous voulez est 0, 1 ou peut-être 2 pourrait être une solution viable.

Cependant, pour une solution plus complète, supposons que vous disposez d'une machine sur laquelle de très nombreux utilisateurs peuvent être connectés, et essayez de trouver celui que vous souhaitez.

for proc in /proc/[0-9]*/
do
     if [ Xorg = $(< $proc/comm ) ] 2>/dev/null && \
        [ $(id -u user2) -eq $(< $proc/loginuid) ] 2>/dev/null
     then
        for subproc in $(
        do
            echo "user2 display=" $(perl -ne 'if (m,DISPLAY=(.*)\0,) { print $1 }' < $subproc/environ)
        done
     fi
done

puis, user1 peut enfin (en utilisant la valeur DISPLAY obtenue ci-dessus ; je viens d'écrire :14.0 ici…)

DISPLAY=:14.0 xmessage "Hello, user2"

Envoi d'une notification à la place

Dans un souci d'exhaustivité, ce qui suit fonctionne au moins sur le bureau Gnome. Je ne sais pas si Fluxbox a un widget de notification.

 DISPLAY=:14.0 notify-send "Hello, user2"

Cela a beaucoup plus d'options conviviales pour l'affichage, et apparaîtra probablement de manière plutôt conviviale sur l'écran de l'utilisateur.


Linux
  1. Comment définir et supprimer des variables d'environnement locales, utilisateur et système sous Linux

  2. Comment changer un nom d'utilisateur sous Linux

  3. Comment ajouter un utilisateur à un groupe sous Linux

  4. Comment envoyer des e-mails à un utilisateur externe avec Mailx sous Linux

  5. Comment envoyer des paquets multicast via une interface spécifique sous Linux

Comment ajouter un utilisateur à un groupe sous Linux

Comment démarrer en ligne de commande Linux

Comment changer d'utilisateur sous Linux

Comment voir les utilisateurs connectés sous Linux

Comment ajouter un utilisateur à un groupe sous Linux

Comment ajouter un utilisateur à un groupe Linux