다른 사용자에게 메시지 보내기


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?

그러나 'wall'은 로그인 한 모든 사용자에게 메시지를 보냅니다.
Ricardo Almeida

2
@Exsound-맞습니다. 내가 본 다른 방법을 통해 식별없이 메시지를 보낼 수있는 방법이 없습니다.
slm

1
내 시스템에서 syslog는 벽을 통해 레벨 에머가있는 메시지를 보내도록 구성되어 있으므로 logger -p emerg hi위의 첫 번째 방법과 동일 하게 작동하지만 syslogd는 발신자로 표시되지만 sudo는 필요하지 않습니다.
Michael Suelmann

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
굉장한 것으로 확인되었습니다.
잭스

슈퍼 굉장합니다.
Anwar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.