別のユーザーにメッセージを送信する


64

Linuxシェルを介して同じネットワーク上の他の人にメッセージを送信するコマンドはありますか?私はwrite userメッセージ自体を使用してから書き込みます。しかし、ユーザー名が表示されないコマンドや、メッセージを送信しようとしているコマンドがあります

私が使用しているコマンドは、これを連絡しようとしているユーザーに表示します(Webから取得したコード):

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が実際に擬似端末の1つにいることがわかっていると仮定すると、そのようにテキストをそのデバイスに直接エコーできます。ターミナルからpts/1

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

結果pts/4

$ man rsync
$ Let's go have lunch... ok?

しかし、「wall」はログインしているすべてのユーザーにメッセージを送信しますか?
リカルドアルメイダ

2
@Exsound-正しい。私が見た他の方法で身分証明書なしでメッセージを送信する方法はありません。
slm

1
私のシステムでは、syslogはwallを介してレベル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
素晴らしいと確認されました。
ディブ

素晴らしいと思います。
アンワル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.