web-dev-qa-db-fra.com

Envoi de messages à un autre utilisateur

Existe-t-il une commande pour envoyer des messages via le shell Linux à d'autres personnes sur le même réseau? J'utilise write user puis écrivez le message lui-même. Mais il y a une commande qui n'affiche pas mon nom d'utilisateur ou que j'essaie de leur envoyer un message

La commande que j'utilise le montrera à l'utilisateur que j'essaie de contacter (code extrait du Web):

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

La seule façon simple que je connaisse de le faire est d'utiliser la commande wall. Cela peut être utilisé pour omettre l'identification de l'expéditeur, via le -n commutateur.

Exemple

$ Sudo wall -n hi

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

hi

en utilisant l'écho

Cette méthode alternative est plus un hack, car elle ne se fait pas via un outil explicite, mais vous pouvez faire écho du texte vers le terminal d'un utilisateur en supposant que vous savez 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 savez que l'utilisateur saml se trouve en fait sur l'un des pseudo-terminaux, vous pouvez faire écho directement au texte de ce périphérique. Depuis le 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?
98
slm

Vous pouvez utiliser cette fonction :).
Copiez ce code dans un fichier portant le nom SendMessage.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 dans Terminal et saisissez:

chmod +x SendMessage.sh
./SendMessage.sh

Et vous pouvez envoyer un message.

9
Hajime Beddai