Отправка сообщений другому пользователю

64

Есть ли команда для отправки сообщений через оболочку Linux другим людям в той же сети? Я использую, write userа затем написать само сообщение. Но есть какая-то команда, которая не показывает мое имя пользователя или что я пытаюсь отправить им сообщение

Команда, которую я использую, покажет это пользователю, с которым я пытаюсь связаться (код взят из Интернета):

Message from root@dev.example.com on pts/1 at 17:11 ...
Рикардо Алмейда
источник

Ответы:

96

Единственный простой способ сделать это - использовать wallкоманду. Это может быть использовано для пропуска идентификации отправителя через -nкоммутатор.

пример

$ sudo wall -n hi

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

hi

используя эхо

Этот альтернативный метод более хакерский, так как он не выполняется с помощью явного инструмента, но вы можете выводить текст на терминал пользователя, предполагая, что вы знаете, на каком из них он работает.

пример

$ 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

Предполагая, что вы знаете, что пользователь samlна самом деле находится на одном из псевдотерминалов, вы можете напрямую выводить текст на это устройство. С терминала pts/1:

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

Результат на pts/4:

$ man rsync
$ Let's go have lunch... ok?
SLM
источник
Но «стена» отправляет сообщение всем пользователям, вошедшим в систему, верно?
Рикардо Алмейда
2
@ Exsound - правильно. Нет способа отправить сообщение без вашей идентификации любым другим способом, который я видел.
SLM
1
В моей системе syslog настроен на отправку сообщений с уровнем emerg через стену, поэтому logger -p emerg hiработает так же, как 1-й метод выше (за исключением того, что syslogd отображается как отправитель), но не требует sudo.
Майкл Суэльманн
1
@Exsound - вы также можете эхо прямо на терминал, смотрите обновление.
SLM
@ Exsound - милости просим, ​​спасибо за вопрос.
slm
9

Вы можете использовать эту функцию :).
Скопируйте этот код в файл с именем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

Как использовать:
перейдите в терминал и введите:

chmod +x SendMessage.sh
./SendMessage.sh

И вы можете отправить сообщение.

Хаджиме Беддай
источник
1
Подтверждено как классно.
чп
Супер круто я бы сказал.
Анвар