Gửi tin nhắn cho người dùng khác


64

Có lệnh nào để gửi tin nhắn qua shell Linux cho những người khác trên cùng một mạng không? Tôi đang sử dụng write uservà sau đó viết tin nhắn. Nhưng có bất kỳ lệnh nào không hiển thị tên người dùng của tôi hoặc tôi đang cố gắng nhắn tin cho họ

Lệnh tôi đang sử dụng sẽ hiển thị điều này cho người dùng mà tôi đang cố gắng liên hệ (mã được lấy từ web):

Message from root@dev.example.com on pts/1 at 17:11 ...

Câu trả lời:


96

Cách đơn giản duy nhất tôi biết để làm điều này là sử dụng walllệnh. Điều này có thể được sử dụng để bỏ qua nhận dạng của người gửi, thông qua -nchuyển đổi.

Thí dụ

$ sudo wall -n hi

Remote broadcast message (Fri Nov  8 13:49:18 2013):

hi

sử dụng tiếng vang

Phương pháp thay thế này là một cách hack hơn, vì nó không được thực hiện thông qua một công cụ rõ ràng nhưng bạn có thể lặp lại văn bản đến thiết bị đầu cuối của người dùng giả sử bạn biết họ đang sử dụng công cụ nào.

Thí dụ

$ 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

Giả sử bạn biết người dùng samlthực tế là trên một trong những thiết bị đầu cuối giả, bạn có thể lặp lại văn bản đến thiết bị đó như vậy. Từ thiết bị đầu cuối pts/1:

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

Kết quả trên pts/4:

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

Nhưng 'tường' gửi tin nhắn cho tất cả người dùng đăng nhập phải không?
Ricardo Almeida

2
@ Mở rộng - đúng. Không có cách nào để gửi tin nhắn mà không có thông tin nhận dạng của bạn thông qua bất kỳ phương thức nào khác mà tôi đã thấy.
slm

1
Trên syslog hệ thống của tôi được cấu hình để gửi tin nhắn với mức xuất hiện qua tường, do đó, logger -p emerg hihoạt động giống như phương thức 1 ở trên (ngoại trừ syslogd được hiển thị là người gửi), nhưng không cần sudo.
Michael Suelmann

1
@Exsound - bạn cũng có thể lặp lại trực tiếp đến thiết bị đầu cuối, xem cập nhật.
slm

@Exsound - bạn được chào đón, cảm ơn vì Q.
slm

9

Bạn có thể sử dụng chức năng này :).
Sao chép mã đó vào tập tin có tênSendMessage.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

Cách sử dụng:
Chuyển đến Terminal và gõ:

chmod +x SendMessage.sh
./SendMessage.sh

Và bạn có thể gửi tin nhắn.


1
Khẳng định là tuyệt vời.
dibs

Tôi sẽ nói siêu tuyệt vời.
Anwar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.