Invio di messaggi a un altro utente


64

Esiste un comando per inviare messaggi attraverso la shell di Linux ad altre persone sulla stessa rete? Sto usando write usere quindi scrivo il messaggio stesso. Ma c'è qualche comando che non mostra il mio nome utente o che sto cercando di inviargli un messaggio

Il comando che sto usando mostrerà questo all'utente che sto provando a contattare (codice preso dal web):

Message from root@dev.example.com on pts/1 at 17:11 ...

Risposte:


96

L'unico modo semplice che conosco per fare questo è usare il wallcomando. Questo può essere usato per omettere l'identificazione del mittente, tramite l' -ninterruttore.

Esempio

$ sudo wall -n hi

Remote broadcast message (Fri Nov  8 13:49:18 2013):

hi

usando l'eco

Questo metodo alternativo è più di un hack, poiché non viene eseguito tramite uno strumento esplicito, ma è possibile eseguire l'eco del testo sul terminale di un utente, supponendo che si sappia su quale si trova.

Esempio

$ w
 13:54:26 up 2 days, 36 min,  4 users,  load average: 4.09, 4.20, 3.73
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
saml     tty1     :0               Wed13    2days  3:55m  0.04s pam: gdm-password
saml     pts/0    :0.0             Wed13   24:16m  0.35s  0.35s bash
saml     pts/1    :0.0             Wed20    0.00s  3.71s  0.00s w
saml     pts/4    :0.0             01:20   12:33m  0.36s  0.05s man rsync

Supponendo che tu sappia che l'utente si samltrova effettivamente su uno dei pseudo terminali, puoi fare eco al testo direttamente su quel dispositivo in questo modo. Dal terminal pts/1:

$ sudo echo "Let's go have lunch... ok?" > /dev/pts/4
$ 

Risultato su pts/4:

$ man rsync
$ Let's go have lunch... ok?

Ma "wall" invia il messaggio a tutti gli utenti che hanno effettuato l'accesso giusto?
Ricardo Almeida,

2
@Exsound - corretto. Non esiste un modo per inviare un messaggio senza la tua identificazione tramite qualsiasi altro metodo che ho visto.
slm

1
Sul mio sistema syslog è configurato per inviare messaggi con il livello emerg tramite wall, quindi logger -p emerg hifunziona come il primo metodo sopra (tranne che syslogd è mostrato come mittente), ma non ha bisogno di sudo.
Michael Suelmann,

1
@Exsound: è anche possibile eseguire l'eco direttamente sul terminale, consultare l'aggiornamento.
slm

@Exsound - prego, grazie per il Q.
slm

9

Puoi usare questa funzione :).
Copia quel codice in un file con nomeSendMessage.sh

#!/bin/bash

SendMessage()
{
    com=`tty`
    set `who am i`
    who | grep -v "$1" >filef.txt

    exec < filef.txt  
    array=""

    while read line
    do
        set $line
        echo $1
        array+=($1)
    done

    rm filef.txt
    exec <$com

    echo "====================>   Select User Number  <===================="
    echo

    select userName in ${array[@]} 
    do
        UserNam=$userName
        if [ -n $UserNam ]; then
            break
        fi
    done

    unset array #Clear the Array

    echo 
    echo

    echo "===================================> Message Body <==================================="

    mesg y
    read -p "put here your Message==> " messagel

    echo $messagel | write $UserNam

    if [ $? -eq 0 ]; then
        echo "It has been sent successfully.............ok"
        #return 0
    else
        echo "Message Failed to send ..............No!!"
        echo "Maybe It is not available for you To send Message To hem "
        return 1
    fi  
}

SendMessage

Come usare:
Vai a Terminale e digitare:

chmod +x SendMessage.sh
./SendMessage.sh

E puoi inviare un messaggio.


1
Confermato come fantastico.
sal

Super fantastico direi.
Anwar,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.