GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:come inviare un messaggio all'utente locale connesso a X11?

Il xmessage lo strumento ti consente di fare esattamente questo; presentare una finestra popup agli utenti con un messaggio di testo all'interno.

Esempio:l'utente2 accede a una sessione BASH sulla scatola ed emette:

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

se accedi a una sessione TSCH, sarebbe qualcosa del genere:

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

In alternativa, puoi inviare messaggi alle sessioni terminali in uno dei seguenti due modi:

Usando wall (=avvisa tutti [utenti])

Dalla pagina man:
Wall visualizza il contenuto del file o, per impostazione predefinita, il suo input standard, sui terminali di tutti gli utenti attualmente connessi.

Se vuoi scegliere come target un utente specifico, usa write . Ancora una volta, l'uomo ci dice:

L'utility di scrittura ti permette di comunicare con altri utenti, copiando le righe dal tuo terminale al loro.


Di norma, le sessioni X11 vengono solitamente avviate in modalità "privata", quindi è necessaria una delle due cose:o, collaborazione da user2 per consentirti di accedere ai loro schermi o privilegi di superutente per "intrufolarti" nei loro schermi.

PERICOLO: Tieni presente che, una volta che hai accesso al loro schermo, puoi anche eseguire operazioni come acquisire sequenze di tasti (potenzialmente incluse password) e acquisire schermate, quindi questo è un grosso rischio per la sicurezza.

Nella maggior parte casi è preferibile invece utilizzare uno strumento di messaggistica o un programma di chat per queste cose.

Avvertenze a parte:

Cooperazione

Se user2 vuole consentire user1 per accedere alla loro schermata, quindi prima user2 deve emettere un comando come:

 xhost +si:localuser:user1

Questo potrebbe potenzialmente essere aggiunto a uno script di avvio di qualche tipo; Non conosco Fluxbox, ma presumo abbia un rc o hook di inizio sessione.

Una volta che questo è stato emesso, user1 può quindi scrivere a user2 , se riescono a trovarlo.

Se user2 ne è a conoscenza, può sempre inviarlo a user1 in qualche altro modo.

Trovare il display di un altro utente

Su una tipica workstation, è raro che più di uno o due utenti abbiano effettuato l'accesso; in tal caso, "indovinare" che il display desiderato sia 0, 1 o forse 2 potrebbe essere una soluzione praticabile.

Tuttavia, per una soluzione più completa, supponiamo che tu disponga di un computer in cui potrebbero essere registrati molti utenti e prova a trovare quello che desideri.

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

quindi, user1 può finalmente (usando il valore DISPLAY ottenuto sopra; ho appena scritto :14.0 qui…)

DISPLAY=:14.0 xmessage "Hello, user2"

Invia invece una notifica

Nell'interesse della completezza, quanto segue funziona almeno sul desktop Gnome. Non so se Fluxbox ha un widget di notifica.

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

Questo ha opzioni di visualizzazione molto più intuitive e probabilmente apparirà in un modo piuttosto amichevole sullo schermo dell'utente.


Linux
  1. Come modificare un nome utente in Linux

  2. Come aggiungere un utente a un gruppo in Linux

  3. Come configurare i banner di accesso in Linux (RedHat, Ubuntu, CentOS, Fedora)

  4. Come inviare e-mail a un utente esterno con Mailx su Linux

  5. Come inviare pacchetti multicast tramite un'interfaccia specifica in Linux

Come aggiungere un utente al gruppo in Linux

Come avviare la riga di comando di Linux

Come cambiare utente su Linux

Come vedere gli utenti che hanno effettuato l'accesso in Linux

Come aggiungere un utente al gruppo su Linux

Come aggiungere un utente a un gruppo Linux