¿Hay algún comando para enviar mensajes a través del shell de Linux a otras personas en la misma red? Estoy usando write usery luego escribo el mensaje en sí. Pero hay algún comando que no muestra mi nombre de usuario o que estoy tratando de enviarles un mensaje
El comando que estoy usando mostrará esto al usuario que estoy tratando de contactar (código tomado de la web):
La única forma directa que sé de hacer esto es usar el wallcomando. Esto se puede utilizar para omitir la identificación del remitente, a través del -ninterruptor.
Ejemplo
$ sudo wall -n hi
Remote broadcast message (Fri Nov 8 13:49:18 2013):
hi
usando echo
Este método alternativo es más un truco, ya que no se realiza a través de una herramienta explícita, pero puede enviar un mensaje de texto al terminal de un usuario suponiendo que sepa en cuál está.
Ejemplo
$ 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
Suponiendo que sabe que el usuario samlestá en uno de los pseudo terminales, puede hacer eco del texto directamente a ese dispositivo. Desde la terminal pts/1:
$ sudo echo "Let's go have lunch... ok?" > /dev/pts/4
$
Pero 'wall' envía el mensaje a todos los usuarios conectados ¿no?
Ricardo Almeida
2
@Exsound - correcto. No hay forma de enviar un mensaje sin su identificación a través de cualquier otro método que haya visto.
slm
1
En mi sistema, syslog está configurado para enviar mensajes con nivel emergente a través del muro, por lo que logger -p emerg hifunciona igual que el primer método anterior (excepto que syslogd se muestra como remitente), pero no necesita sudo.
Michael Suelmann
1
@Exsound: también puede hacer eco directamente al terminal, ver actualización.
slm
@Exsound - de nada, gracias por la Q.
slm
9
Puedes usar esta función :).
Copie ese código en un archivo con nombreSendMessage.sh
#!/bin/bashSendMessage(){
com=`tty`set`who am i`
who | grep -v "$1">filef.txt
exec < filef.txt
array=""while read line
doset $line
echo $1
array+=($1)done
rm filef.txt
exec <$com
echo "====================> Select User Number <===================="
echo
select userName in ${array[@]}doUserNam=$userName
if[-n $UserNam ];thenbreakfidone
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 0else
echo "Message Failed to send ..............No!!"
echo "Maybe It is not available for you To send Message To hem "return1fi}SendMessage
logger -p emerg hi
funciona igual que el primer método anterior (excepto que syslogd se muestra como remitente), pero no necesita sudo.Puedes usar esta función :).
Copie ese código en un archivo con nombre
SendMessage.sh
Cómo usar:
Vaya a Terminal y escriba:
Y puedes enviar un mensaje.
fuente