Mengirim pesan ke pengguna lain


64

Apakah ada perintah untuk mengirim pesan melalui Linux shell ke orang lain di jaringan yang sama? Saya menggunakan write userdan kemudian menulis pesan itu sendiri. Tetapi ada perintah yang tidak menunjukkan nama pengguna saya atau saya mencoba mengirimi mereka pesan

Perintah yang saya gunakan akan menunjukkan ini kepada pengguna yang saya coba hubungi (kode diambil dari web):

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

Jawaban:


96

Satu-satunya cara langsung yang saya tahu melakukan ini adalah dengan menggunakan wallperintah. Ini dapat digunakan untuk menghilangkan identifikasi pengirim, melalui -nsakelar.

Contoh

$ sudo wall -n hi

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

hi

menggunakan gema

Metode alternatif ini lebih merupakan peretasan, karena tidak dilakukan melalui alat eksplisit tetapi Anda dapat menggemakan teks ke terminal pengguna dengan asumsi Anda tahu yang mana yang sedang mereka gunakan.

Contoh

$ 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

Dengan asumsi Anda tahu pengguna samlsebenarnya di salah satu terminal semu Anda dapat menggemakan teks ke perangkat itu secara langsung seperti itu. Dari terminal pts/1:

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

Hasil pada pts/4:

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

Tapi 'wall' mengirim pesan ke semua pengguna yang masuk, kan?
Ricardo Almeida

2
@Exsound - benar. Tidak ada cara untuk mengirim pesan tanpa identifikasi Anda melalui metode lain yang saya lihat.
slm

1
Pada sistem saya syslog dikonfigurasi untuk mengirim pesan dengan level muncul melalui dinding, jadi logger -p emerg hiberfungsi sama seperti metode 1 di atas (kecuali syslogd ditampilkan sebagai pengirim), tetapi tidak perlu sudo.
Michael Suelmann

1
@Exsound - Anda juga dapat menggema langsung ke terminal, lihat pembaruan.
slm

@Exsound - sama-sama, terima kasih untuk Q.
slm

9

Anda dapat menggunakan fungsi ini :).
Salin kode itu ke file dengan namaSendMessage.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

Cara menggunakan:
Buka Terminal dan ketik:

chmod +x SendMessage.sh
./SendMessage.sh

Dan Anda dapat mengirim pesan.


1
Dikonfirmasi luar biasa.
dibs

Super Luar Biasa menurut saya.
Anwar
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.