send echo to socket network

echo "foo" > /dev/tcp/
this command will send a message to the socket 25 on host in tcp. works on udp and icmp understand only IP address, not hostname. on the other side (, you can listen to this socket and test if you receive the message. easy to diagnose a firewall problem or not.

By: mobidyc
2009-09-12 16:48:05

2 Alternatives + Submit Alt

  • Using netcat, usuallly installed on debian/ubuntu. Also to test against a sample server the following two commands may help echo got milk? | netcat -l -p 25 python -c "import SocketServer; SocketServer.BaseRequestHandler.handle = lambda self: self.request.send('got milk?\n'); SocketServer.TCPServer(('', 25), SocketServer.BaseRequestHandler).serve_forever()" Show Sample Output

    echo foo | netcat 25
    pykler · 2009-09-13 01:33:02 0
  • you can use a pair of commands to test firewalls. 1st launch this command at destination machine ncat -l [-u] [port] | cat then use this command at source machine to test remote port echo foo | ncat [-u] [ip address] [port] First command will listen at specified port. It will listen TCP. If you use -u option will listen UDP. Second command will send "foo" through ncat and will reach defined IP and port. Show Sample Output

    echo foo | ncat [ip address] [port]
    dragonauta · 2012-10-26 10:53:47 0

What Others Think

This syntax is a shell feature, not of the OS, and I know it is part of bash, if not in more in shells. But annoyingly in the default debian packaging for bash, /dev/tcp files are disabled, since you can get the same functionality and more with netcat (or socat). The manpage says these net redirections can produce "completely unexpected results."
bwoodacre · 627 weeks and 4 days ago
It would be nice if commercial Unixes shipped with netcat, or the black gang in operations could compile freely. FWIW, Solaris 10 ships with this feature enabled, and I believe it defaults to ON for at least some BSDs. The fuller syntax is /dev/[tcp|udp]/[host]/[port]
lbonanomi · 627 weeks and 4 days ago
Just a correction to your description. This does not work for ICMP packets (ping, etc.) Although it would be kinda cool if it did.
deltaray · 589 weeks ago

What do you think?

Any thoughts on this command? Does it work on your machine? Can you do the same thing with only 14 characters?

You must be signed in to comment.

What's this? is the place to record those command-line gems that you return to again and again. That way others can gain from your CLI wisdom and you from theirs too. All commands can be commented on, discussed and voted up or down.

Share Your Commands

Stay in the loop…

Follow the Tweets.

Every new command is wrapped in a tweet and posted to Twitter. Following the stream is a great way of staying abreast of the latest commands. For the more discerning, there are Twitter accounts for commands that get a minimum of 3 and 10 votes - that way only the great commands get tweeted.


Subscribe to the feeds.

Use your favourite RSS aggregator to stay in touch with the latest commands. There are feeds mirroring the 3 Twitter streams as well as for virtually every other subset (users, tags, functions,…):

Subscribe to the feed for: