I have a syslog server listening on
localhost:514 as UDP and would like to write messages to it on that port. (Using Ubuntu 14.04)
If I run either of these commands from bash it prints the date every 2 seconds to syslog
# Using netcat while true; do sleep 2; date; done | nc -u localhost 514 # Using /dev/udp while true; do sleep 2; date; done > /dev/udp/localhost/514
Now just to test things I kill the syslog server then start it up a few seconds later.
While the syslog process is dead, the
/dev/udp command every 2 seconds prints an error message to the console, so it recognizes that there is no
localhost:514 for it to write to.
date: write error: Connection refused
Once syslog is back, these connection refused messages stop and it resumes writing the date to syslog. This is as expected.
But the netcat command doesn't do this. While the syslog process is dead, it doesn't print any output to the console. And when syslog is back, it doesn't continue writing the date to syslog.
Why won't netcat continue writing to localhost:514 when syslog is restarted? How can I get netcat to behave the way
/dev/udp does in this example?