Надсилання повідомлень іншому користувачеві


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?

Але "стіна" надсилає повідомлення всім користувачам, які увійшли правильно?
Рікардо Альмейда

2
@Exsound - правильно. Немає способу відправити повідомлення без вашої ідентифікації будь-яким іншим способом, який я бачив.
slm

1
У моєму системному системному журналі налаштовано для надсилання повідомлень з рівнем emerg через стіну, тому logger -p emerg hiпрацює так само, як і 1-й метод вище (крім syslogd показаний як відправник), але sudo не потрібен.
Майкл Суельман

1
@Exsound - ви також можете перегукуватись безпосередньо з терміналом, див. Оновлення.
slm

@Exsound - ласкаво просимо, дякую за Q.
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
Підтверджений як дивовижний.
даб

Супер дивовижний, я б сказав.
Анвар
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.