Enviando mensagens para outro usuário

58

Existe algum comando para enviar mensagens através do shell do Linux para outras pessoas na mesma rede? Estou usando write user e, em seguida, escrevo a própria mensagem. Mas há algum comando que não mostra meu nome de usuário ou que estou tentando enviar uma mensagem

O comando que estou usando mostrará isso para o usuário que estou tentando contatar (código retirado da web):

Message from [email protected] on pts/1 at 17:11 ...
    
por Ricardo Almeida 08.11.2013 / 19:41

2 respostas

88

A única maneira direta de fazer isso é usar o comando wall . Isso pode ser usado para omitir a identificação do remetente, através da opção -n .

Exemplo

$ sudo wall -n hi

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

hi

usando echo

Esse método alternativo é mais um hack, já que não é feito através de uma ferramenta explícita, mas você pode fazer o eco do texto para o terminal de um usuário, supondo que você sabe em qual está.

Exemplo

$ 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

Supondo que você saiba que o usuário saml está, de fato, em um dos pseudo terminais, você pode fazer o eco do texto para esse dispositivo diretamente assim. Do terminal pts/1 :

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

Resultado em pts/4 :

$ man rsync
$ Let's go have lunch... ok?
    
por 08.11.2013 / 19:50
8

Você pode usar esta função :). Copie esse código para o arquivo com o nome 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

Como usar:
Vá para o Terminal e digite:

chmod +x SendMessage.sh
./SendMessage.sh

E você pode enviar uma mensagem.

    
por 30.07.2015 / 21:26