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 root@dev.example.com on pts/1 at 17:11 ...

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?

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.


1
Confirmé comme génial.
Dibs

Super génial je dirais.
Anwar
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.