Enviar mensajes entre 2 PC con Ubuntu (estilo de envío neto)

28

Estoy tratando de encontrar una manera de enviar un mensaje (como un mensaje emergente) de una PC a otra. ambos están usando Ubuntu. Ya probé la forma smbclient pero esto solo funciona entre una PC Linux y una PC con Windows. Necesito una forma de enviar mensajes desde una PC Ubuntu a otra PC Ubuntu. Similar a la forma de Windows Net Send.

Luis Alvarado
fuente
notify-send envía una ventana emergente en mi terminal pero quería enviar una ventana emergente a otros usuarios (puede ser una lista de usuarios específicos) pero sin usar sudo o ssh, ¿tengo alguna alternativa? Un comando que funciona como "notificar- enviar "pero para enviar un mensaje en otro terminal de usuario.

Respuestas:

27

Instalar sshy libnotify-bin(a través del terminal):

sudo apt-get install ssh libnotify-bin

en ambas computadoras.

(Puede que libnotify-binya lo hayas instalado. El mío ya lo tenía).

Luego SSH (a través de la terminal) en la otra computadora:

ssh <user name>@<ip address>

Y luego, cuando haya iniciado sesión, escriba:

export DISPLAY=:0
notify-send "Title of message" "message text"

¡Feliz envío de mensajes!
(o asustando a XD)

ohitsanazn
fuente
1
Aunque esta es una respuesta muy inteligente, estoy tratando de encontrar una manera de enviarla sin ssh. Con la opción ssh, ya sé que funciona (usando el muro, por ejemplo), pero su notificación de envío es muy inteligente.
Luis Alvarado
1
Después de buscar varios métodos, este es el mejor. Debido a 2 razones: 1. ssh me da cierta seguridad sobre hacer esto y 2. El uso de DISPLAY permite seleccionar a qué video se mostrará el mensaje. Probé usando ssh user @ ip / domain 'DISPLAY =: 0 notify-send "TITLE" "MESSAGE"'
Luis Alvarado
Puede funcionar en un entorno hogareño, pero en una organización grande, no estoy seguro de si es posible instalar SSH en cada sistema cliente, tengo experiencia ya que en mi oficina hay aproximadamente 100 comunicaciones, debería haber otra forma de enviar un mensaje sin instalar SSh
The_skinny_man
¡Mira mi respuesta para lograr esto sin ssh! :)
Matt
31

Leí que querías hacer esto sin SSH, creo que tengo una solución: netcat[nc] Viene con Ubuntu por defecto.

Primero necesitamos un "demonio" para ejecutar en segundo plano. En segundo lugar, necesitamos un programa para que aparezca la alerta. He zenityinstalado Si no lo hace, instálelo o edite el script para usar lo que quiera [por ejemplo xmessage, pero eso es feo]. A continuación, pegue esto en 'daemon.sh':

#!/bin/bash
port=3333
nc -l $port | while read msg; do zenity --info --text "$msg"; done

Ahora, hazlo ejecutable chmod +x daemon.sh, ahora ejecútalo en segundo plano:./daemon.sh &

Ahora que has terminado! Bueno, en realidad necesitas hacer esto en cada computadora. También querrás automatizar el inicio del demonio. Abra las aplicaciones de 'inicio' desde el menú y agregue su script. Una vez hecho esto, para enviar un mensaje a la otra computadora, escriba:

nc 192.168.1.X 3333luego escribe tu mensaje y presiona Enter. Cada línea de ingreso hará que aparezca un mensaje emergente. Para salir de nc, presione Ctrl + Co Ctrl + D.

Solo asegúrese de reemplazar 192.168.1.X con la IP local real de la otra PC. [Puede usar ifconfigpara encontrar la dirección IP]

También se podría hacer otro guión, por ejemplo message.sh. En eso, pegue:

#!/bin/bash
nc 192.168.2.X 3333

Entonces chmod +x message.sh. Luego puede simplemente escribir y ./message.shluego escribir su mensaje, luego ingresar y su mensaje será enviado. Además, ahora que lo pienso, también podría agregar una notificación de sonido. Yo recomendaría mplayer, es un reproductor de medios CLI. No debería ser demasiado difícil de resolver, pero si tiene alguna pregunta, ¡no dude en preguntar!

Mate
fuente
1
Esta es una solución ordenada, pero prefiero SSH por razones de seguridad.
ohitsanazn
1
Alguien me dijo que puede usar en socatlugar de netcat, para el cifrado SSL. Sin embargo, nunca lo miré.
Matt
3
¡Guauu! ¡bien hecho! Lo cambié un poco para trabajar con notify-osd:nc -l $port | while read msg; do notify-send "$HOSTNAME" "$msg" -i gtk-network; done
Khurshid Alam
O con dirección IP de conector remoto:while true; do nc -l -v 3333 2> status | while read msg; do ip=$(cat status | grep -o -P '(?<=from).*(?=port)') && notify-send "$ip" "$msg" -i gtk-network; done ; done
Khurshid Alam
Puede usar cryptcatpara hacer que su comunicación se encripte con una contraseña. Funciona igual quenc
Anónimo Ornitorrinco
11

Se usa ncpara enviar texto entre dos computadoras en la misma red (sin encriptación).

En la computadora receptora hacer

nc -l 3333

En la computadora de envío hacer

nc 192.168.1.XX 3333

entonces simplemente comience a escribir y el texto aparecerá en la otra computadora (después de presionar enter) hasta que presione ctlr + c.


Puede obtener la IP de la computadora receptora con hostname -I(ejecutarla en la computadora receptora).

No tiene que usar el puerto 3333, use cualquier número entre 1025 y 65535 inclusive.

Recuerda que esto no está encriptado . Cualquier computadora en su red puede ver qué texto está transfiriendo.

Boris
fuente