Linux Shellを介して同じネットワーク上の他の人にメッセージを送信するコマンドはありますか?私はwrite user
を使用していて、メッセージ自体を書き込みます。しかし、ユーザー名が表示されない、またはメッセージを送信しようとするコマンドがあります。
私が使用しているコマンドは、連絡しようとしているユーザーにこれを表示します(Webから取得したコード)。
Message from [email protected] on pts/1 at 17:11 ...
これを行う簡単な方法は、wall
コマンドを使用することだけです。これを使用して、-n
スイッチを介して送信者のIDを省略できます。
$ 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?
この関数を使用できます:)。
そのコードを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
そして、あなたはメッセージを送ることができます。