GNU/Linux >> Znalost Linux >  >> Linux

Linux:Jak poslat zprávu místnímu uživateli přihlášenému do X11?

xmessage nástroj vám umožňuje přesně to; prezentovat uživatelům vyskakovací okno s textovou zprávou uvnitř.

Příklad:uživatel2 se přihlásí do relace BASH na boxu a zadá:

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

pokud se přihlásíte do relace TSCH, bude to asi toto:

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

Případně můžete posílat zprávy do terminálových relací jedním ze dvou způsobů:

Pomocí wall (=varovat všechny [uživatele])

Z manuálové stránky:
Wall zobrazuje obsah souboru nebo standardně jeho standardní vstup na terminálech všech aktuálně přihlášených uživatelů.

Pokud chcete cílit na konkrétního uživatele, použijte write . Opět nám muž říká:

Nástroj pro zápis vám umožňuje komunikovat s ostatními uživateli kopírováním řádků z vašeho terminálu do jejich.


Zpravidla se relace X11 obvykle spouštějí v „soukromém“ režimu, takže potřebujete jednu ze dvou věcí:buď spolupráci z user2 které vám umožní přístup k jejich obrazovkám nebo oprávnění superuživatele „proniknout“ na jejich obrazovky.

NEBEZPEČÍ: Mějte na paměti, že jakmile budete mít přístup k jejich obrazovce, můžete také dělat věci, jako je zachytit stisknuté klávesy (potenciálně včetně hesel) a pořizovat snímky obrazovky, takže je to velké bezpečnostní riziko.

Ve většině v případech je pro tyto věci vhodnější použít nástroj pro zasílání zpráv nebo chatovací program.

Upozornění stranou:

Spolupráce

Pokud user2 chce povolit user1 pro přístup k jejich obrazovce, poté nejprve user2 musí vydat příkaz jako:

 xhost +si:localuser:user1

To by mohlo být potenciálně přidáno do nějakého spouštěcího skriptu; Fluxbox neznám, ale předpokládám, že má rc nebo session-start hook.

Jakmile toto bylo zadáno, user1 pak může zapisovat do user2 's displej, pokud jej najdou.

Pokud user2 si je toho vědoma, může to vždy poslat na user1 nějakým jiným způsobem.

Vyhledání zobrazení jiného uživatele

Na typické pracovní stanici je neobvyklé mít více než jednoho nebo dva přihlášené uživatele; v takovém případě může být funkčním řešením „hádání“, že požadovaný displej je 0, 1 nebo možná 2.

Pro úplnější řešení však předpokládejme, že máte počítač, na kterém se může přihlásit velmi mnoho uživatelů, a pokuste se najít toho, kterého chcete.

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

pak user1 konečně can (pomocí hodnoty DISPLAY získané výše; právě jsem napsal :14.0 zde…)

DISPLAY=:14.0 xmessage "Hello, user2"

Namísto toho odeslat oznámení

V zájmu úplnosti, následující funguje alespoň na ploše Gnome. Nevím, jestli Fluxbox má oznamovací widget.

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

To má mnohem uživatelsky přívětivější možnosti zobrazení a pravděpodobně se na obrazovce uživatele objeví poněkud přátelštějším způsobem.


Linux
  1. Jak změnit uživatelské jméno v Linuxu

  2. Jak přidat uživatele do skupiny v Linuxu

  3. Jak nakonfigurovat přihlašovací bannery v Linuxu (RedHat, Ubuntu, CentOS, Fedora)

  1. Jak odesílat e-maily externímu uživateli pomocí Mailx v systému Linux

  2. Jak odesílat multicastové pakety přes specifické rozhraní v Linuxu

  3. Jak odeslat facebookovou zprávu z linuxové konzole (příkazový řádek)

  1. Jak nastavit a zrušit místní, uživatelské a systémové proměnné prostředí v Linuxu

  2. Jak mohu odeslat zprávu na můj socket.io websocket z příkazového řádku v linuxu?

  3. Jak odeslat nezpracovanou poštovní zprávu na Linuxu?