Senden von Nachrichten an einen anderen Benutzer

64

Gibt es einen Befehl zum Senden von Nachrichten über die Linux-Shell an andere Personen im selben Netzwerk? Ich benutze write userund schreibe dann die Nachricht selbst. Aber es gibt irgendeinen Befehl, der meinen Benutzernamen nicht anzeigt oder den ich versuche, ihnen eine Nachricht zu senden

Der Befehl, den ich verwende, zeigt dies dem Benutzer, mit dem ich Kontakt aufnehmen möchte (Code aus dem Internet):

Message from [email protected] on pts/1 at 17:11 ...
Ricardo Almeida
quelle

Antworten:

96

Der einzige direkte Weg, den ich dazu kenne, ist die Verwendung des wallBefehls. Hiermit kann die Identifikation des Absenders über den -nSchalter weggelassen werden.

Beispiel

$ sudo wall -n hi

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

hi

mit echo

Diese alternative Methode ist eher ein Hack, da sie nicht über ein explizites Tool ausgeführt wird, sondern Sie Text an das Terminal eines Benutzers ausgeben können, vorausgesetzt, Sie wissen, auf welchem ​​sie sich befinden.

Beispiel

$ 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

Angenommen, Sie wissen, dass sich der Benutzer samltatsächlich an einem der Pseudoterminals befindet, können Sie Text auf diese Weise direkt an dieses Gerät senden. Vom Terminal pts/1:

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

Ergebnis am pts/4:

$ man rsync
$ Let's go have lunch... ok?
slm
quelle
Aber 'wall' sendet die Nachricht an alle angemeldeten Benutzer, richtig?
Ricardo Almeida
2
@Exsound - richtig. Es gibt keine Möglichkeit, eine Nachricht ohne Ihren Ausweis mit einer anderen Methode zu senden, die ich gesehen habe.
SLM
1
Auf meinem System ist syslog so konfiguriert, dass Nachrichten mit Level Emerg über die Pinnwand gesendet werden. Dies logger -p emerg hifunktioniert genauso wie die oben beschriebene Methode (außer, dass syslogd als Absender angezeigt wird), benötigt jedoch kein sudo.
Michael Suelmann
1
@Exsound - Sie können auch direkt zum Terminal zurückkehren (siehe Update).
SLM
@Exsound - Gern geschehen, danke für den Q.
slm
9

Sie können diese Funktion verwenden :).
Kopieren Sie diesen Code in eine Datei mit NamenSendMessage.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

Verwendung:
Gehen Sie zum Terminal und geben Sie Folgendes ein:

chmod +x SendMessage.sh
./SendMessage.sh

Und Sie können eine Nachricht senden.

Hajime Beddai
quelle
1
Bestätigt als genial.
Dibs
Super Super würde ich sagen.
Anwar