I am trying to find a way to send a message (like a popup message) from 1 PC to another. both are using Ubuntu. Already tried the smbclient way but this only works between a linux PC to a windows PC. I need a way to send messages from an Ubuntu PC to another Ubuntu PC. Similar to the way of Windows Net Send.
-
notify-send sends a pop up on my terminal but I wanted to send a popup to other users (may be a list of specific users) but without using sudo or ssh , do I have any alternative .A command which works as "notify-send" but to send message on other user terminal.– user510910Feb 24, 2016 at 11:09
3 Answers
I read you wanted to do this without SSH, I believe I have a solution: netcat
[nc]
It comes with Ubuntu by default.
First we need a "daemon" to run in the background. Second, we need a program to make the alert pop up. I have zenity
installed. If you do not, please install it, or edit the script to use whatever you like [e.x. xmessage
, but that is ugly]. Next, paste this into 'daemon.sh':
#!/bin/bash
port=3333
nc -l $port | while read msg; do zenity --info --text "$msg"; done
Now, make it executable chmod +x daemon.sh
, now run it in the background: ./daemon.sh &
Now you're done! Well, you actually need to do this on each computer. You also will want to automate the start of the daemon. Open the 'startup' applications from the menu, and add your script. Once that's done, to send a message to the other computer, type in:
nc 192.168.1.X 3333
then type your message and hit Enter. Each enter line will make a message pop up. To exit nc, press Ctrl +C, or Ctrl +D.
Just make sure to replace 192.168.1.X with the real local IP of the other PC. [You can use ifconfig
to find the IP address]
You could also make another script, say, message.sh
. In that, paste:
#!/bin/bash
nc 192.168.2.X 3333
Then chmod +x message.sh
. Then you can just type ./message.sh
then type your message, then enter, and your message is sent. Also, now that I think of it, you could also add a sound notification. I would recommend mplayer
, it's a CLI media player. Shouldn't be too hard to figure out, but if you have any questions, please don't hesitate to ask!
-
1This is a neat solution, but I kinda prefer SSH because of security purposes. Nov 23, 2011 at 2:08
-
1Someone told me you can use
socat
instead of netcat, for SSL encryption. I never looked into it though.– MattNov 24, 2011 at 0:06 -
3Wow! nicely done! I changed it a bit to work with notify-osd:
nc -l $port | while read msg; do notify-send "$HOSTNAME" "$msg" -i gtk-network; done
Jun 4, 2013 at 14:50 -
Or with remote-connector ip address:
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
Jun 4, 2013 at 22:21 -
You can use
cryptcat
to make your communication encrypted with a password. It works as same asnc
Mar 17, 2015 at 5:32
Install ssh
and libnotify-bin
(via terminal):
sudo apt-get install ssh libnotify-bin
on both computers.
(You may have libnotify-bin
installed already. Mine had it already.)
Then SSH (via the terminal) into the other computer:
ssh <user name>@<ip address>
And then when you're logged in, type:
export DISPLAY=:0
notify-send "Title of message" "message text"
Happy message-sending!
(or scaring XD)
-
1Even though this is a very intelligent answer am trying to find a way to send it without ssh. With the ssh option i already know it works (using wall for example) but your notify-send is very smart. Mar 23, 2011 at 1:34
-
1After searching several methods this one is the best. Because of 2 reasons: 1. ssh gives me some security over doing this and 2. The use of DISPLAY allows to select to which video the message will show. I tested using ssh user@ip/domain 'DISPLAY=:0 notify-send "TITLE" "MESSAGE"' Apr 5, 2011 at 17:00
-
It may work in a home enviorment, but in a large organisation, i am not sure if it is possible to install SSH on every client system, I have experience as in my office there are about 100 coms, there should be another way to send a message with out installing SSh Oct 26, 2011 at 5:25
-
Use nc
to send text between two computers on the same network (without encryption).
On the receiving computer do
nc -l 3333
On the sending computer do
nc 192.168.1.XX 3333
then just start typing and the text will show up on the other computer (after you press enter) until you hit ctlr+c.
You can get the IP of the receiving computer with hostname -I
(run that on the receiving computer).
You don't have to use port 3333, use any number between 1025 and 65535 inclusive.
Remember that this is not encrypted. Any computer on your network can see what text you're transferring.
-
Neat! When I do
hostname -I
I got 2 IP addresses, only the second one works. Nov 14, 2022 at 17:04