Enviando mensagens para outro usuário


64

Existe algum comando para enviar mensagens através do shell do Linux para outras pessoas na mesma rede? Estou usando write usere depois escrevo a mensagem. Mas há algum comando que não mostre meu nome de usuário ou que estou tentando enviar uma mensagem

O comando que estou usando mostrará isso ao usuário que estou tentando entrar em contato (código retirado da web):

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

Respostas:


96

A única maneira direta que conheço de fazer isso é usar o wallcomando Isso pode ser usado para omitir a identificação do remetente, através do -nswitch.

Exemplo

$ sudo wall -n hi

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

hi

usando eco

Esse método alternativo é mais um hack, pois não é feito por meio de uma ferramenta explícita, mas você pode repetir o texto no terminal de um usuário, assumindo que você sabe em qual deles 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 samlestá de fato em um dos pseudo terminais, você pode ecoar o texto para esse dispositivo diretamente dessa forma. 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?

Mas 'wall' envia a mensagem para todos os usuários logados, certo?
Ricardo Almeida

2
@Exsound - correto. Não há como enviar uma mensagem sem a sua identificação através de qualquer outro método que eu já tenha visto.
slm

11
No meu sistema, o syslog está configurado para enviar mensagens com nível emergente via wall, portanto, logger -p emerg hifunciona da mesma maneira que o primeiro método acima (exceto que syslogd é mostrado como remetente), mas não precisa do sudo.
Michael Suelmann

11
@Exsound - você também pode ecoar diretamente para o terminal, consulte a atualização.
slm

@Exsound - você é bem-vindo, obrigado pela Q.
SLM

9

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

Como usar:
Vá para o Terminal e digite:

chmod +x SendMessage.sh
./SendMessage.sh

E você pode enviar uma mensagem.


11
Confirmado como incrível.
dibs

Super impressionante, eu diria.
Anwar #
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.