Sending text file contents to server using netcat?
There is a daemon process listening on port 5144, which I cannot to modify.
I want to use netcat to send the contents of a text file to the server, but this causes netcat
to hang the terminal until I press Ctrl+C:
cat file.txt | nc -u 127.0.0.1 5144
The only way I am able to get it to work is by running nc -u 127.0.0.1 5144
and copy/pasting the contents of the file manually.
Any ideas?
Also note:
-
cat file.txt | ...
leads tobash: ...: command not found
and I can continue to use the terminal - using
nc -u 127.0.0.1 5144 < file.txt
leads to the same behavior as using | above
Solution 1:
If you are using the GNU version of netcat then you can use the -c flag to close the connection on EOF.
-c, --close close connection on EOF from stdin
If you are using the original version of the tool then you can use the -q flag.
-q secs quit after EOF on stdin and delay of secs
An example for the original version is:
cat file.txt | nc -u -q 0 127.0.0.1 5144
I have add "-q 0" to your original command. This closes the connection after the file has been sent.
Solution 2:
Assuming that after sending EOF connection will stay idle, you can use -w timeout
option, which works for timeout
being equal to zero (unlike stupid -q
option...)
cat file.text | nc -u localhost 4300 -w0