Linux 쉘을 통해 동일한 네트워크의 다른 사람들에게 메시지를 보내는 명령이 있습니까? 나는 write user
메시지를 직접 작성하고 있습니다. 그런데 내 사용자 이름을 표시하지 않는 명령이 있나요? 아니면 메시지를 보내려는 건가요?
내가 사용하는 명령은 연락하려는 사용자에게 이 정보를 표시합니다(웹에서 가져온 코드).
Message from [email protected] on pts/1 at 17:11 ...
답변1
내가 아는 유일한 직접적인 방법은 이 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
이 기능을 사용할 수 있습니다 :).
이 코드를 동일한 이름의 파일에 복사하세요.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
그리고 메시지를 보낼 수 있습니다.