Bash has a builtin network client
I’ve been playing with using Rust on microcontrollers that have ethernet support with the microcontroller using UDP to communicate with the rest of the world.
When testing the code I wrote on the microcontroller, I searched for how to send udp packets from the command line (expecting to find the right incantation for netcat, which I’ve used in the past but don’t remember the options for.) What I actually found was more interesting.
Apparently, bash has builtin “pseudo devices” that allow you to read and write from a TCP or UDP port like you were reading or writing from a file. For example, to send the string “hello” to my microcontroller at 192.168.1.109 on port 1337, I used the command
echo "hello" > /dev/udp/192.168.1.109/1337Bash supports the same thing for TCP connections as well using similar syntax.
That is a lot easier to remember than netcat, and I’ll definitely use it again.