Başka bir kullanıcıya mesaj gönderme


64

Linux kabuğundaki mesajları aynı ağdaki diğer insanlara göndermek için herhangi bir komut var mı? Ben kullanıyorum write userve daha sonra mesajın kendisini yazın. Ancak kullanıcı adımı göstermeyen veya mesaj vermeye çalıştığım herhangi bir komut var.

Kullandığım komut bunu, iletişim kurmaya çalıştığım kullanıcıya gösterecektir (web'den alınan kod):

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

Yanıtlar:


96

Bunu yapmanın tek kolay yolu wallkomutu kullanmak . Bu, göndericinin kimliğini -nanahtarla atlamak için kullanılabilir .

Örnek

$ sudo wall -n hi

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

hi

yankı kullanma

Bu alternatif yöntem daha fazla kesmektir, çünkü açık bir araçla yapılmamıştır, ancak hangisinin üzerinde olduklarını bildiğinizi varsayarak bir kullanıcının terminaline metin eko yapabilirsiniz.

Örnek

$ 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

Kullanıcının saml, aslında takma uçbirimlerden birinin üzerinde olduğunu bildiğinizi varsayarsak , metni bu aygıta doğrudan ekleyebilirsiniz. Terminalden pts/1:

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

Sonuç pts/4:

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

Fakat 'wall' mesajı, giriş yapan tüm kullanıcılara mesaj gönderir.
Ricardo Almeida

2
@Exsound - doğru. Gördüğüm başka bir yöntemle kimliğiniz olmadan mesaj göndermenin bir yolu yok.
slm

1
Sistemimdeki sistem günlüğü, duvardan çıkan seviyeli mesajlar gönderecek şekilde yapılandırılmıştır, bu nedenle logger -p emerg hiyukarıdaki 1. yöntemle aynı şekilde çalışır ( sistem günlüğü gönderici olarak gösteriliyor hariç), ancak sudo gerektirmez.
Michael Suelmann

1
@Exsound - ayrıca doğrudan terminale de eko yapabilirsiniz, güncellemeye bakın.
slm

@Exsound - rica ederim, Q. için teşekkürler
slm

9

Bu işlevi kullanabilirsiniz :).
Bu kodu adı olan dosyaya kopyalayı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

Nasıl kullanılır:
Terminal'e gidin ve yazın:

chmod +x SendMessage.sh
./SendMessage.sh

Ve mesaj gönderebilirsiniz.


1
Müthiş olarak onaylandı.
beştaş

Süper Başar diyebilirim.
Anwar,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.