Envoi de messages à un autre utilisateur

64

Existe-t-il une commande permettant d'envoyer des messages via le shell Linux à d'autres personnes du même réseau? J'utilise write userpuis écris le message lui-même. Mais il y a une commande qui ne montre pas mon nom d'utilisateur ou que j'essaie de leur envoyer un message

La commande que j'utilise va montrer ceci à l'utilisateur que je tente de contacter (code tiré du Web):

Message from [email protected] on pts/1 at 17:11 ...
Ricardo Almeida
la source

Réponses:

96

Le seul moyen simple que je connaisse est de faire appel à la wallcommande. Ceci peut être utilisé pour omettre l'identification de l'expéditeur, via le -ncommutateur.

Exemple

$ sudo wall -n hi

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

hi

en utilisant écho

Cette méthode alternative est plus un hack, car elle ne s'effectue pas à l'aide d'un outil explicite, mais vous pouvez renvoyer du texte au terminal d'un utilisateur en supposant que vous sachiez sur lequel il se trouve.

Exemple

$ 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

En supposant que vous sachiez que l’utilisateur samlest en fait sur l’un des pseudo-terminaux, vous pouvez envoyer du texte à cet appareil directement comme ceci. Du terminal pts/1:

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

Résultat sur pts/4:

$ man rsync
$ Let's go have lunch... ok?
slm
la source
Mais 'mur' envoie le message à tous les utilisateurs connectés, non?
Ricardo Almeida
2
@ Exsound - correct. Il n’ya pas de moyen d’envoyer un message sans votre identification par une autre méthode que j’ai vue.
slm
1
Sur mon système, syslog est configuré pour envoyer des messages avec level level via un mur. Il logger -p emerg hifonctionne donc de la même manière que la 1re méthode ci-dessus (sauf que syslogd est affiché en tant qu'expéditeur), mais n'a pas besoin de sudo.
Michael Suelmann
1
@Exsound - vous pouvez également envoyer un écho directement au terminal, voir mise à jour.
slm
@Exsound - de rien, merci pour le Q.
slm
9

Vous pouvez utiliser cette fonction :).
Copiez ce code dans le fichier avec le nomSendMessage.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

Comment utiliser:
Allez au terminal et tapez:

chmod +x SendMessage.sh
./SendMessage.sh

Et vous pouvez envoyer un message.

Hajime Beddai
la source
1
Confirmé comme génial.
Dibs
Super génial je dirais.
Anwar