Difference between revisions of "Linux netcat"
Jump to navigation
Jump to search
Line 15: | Line 15: | ||
== Simple web server == | == Simple web server == | ||
This creates a simple web server | This creates a simple web server | ||
listen@server1 | listen@server1:$ nc -kl 8080 < index.html #works in Chrome | ||
listen@server1:$ { echo -ne "HTTP/1.0 200 OK\r\n\r\n"; cat index.html; } | nc -l -p 8080 #improved version to correctly respond to '''a single''' HTTP1.1 request | |||
This is a simple index.html file | This is a simple index.html file | ||
<syntaxhighlight lang="bash" line> | <syntaxhighlight lang="bash" line> | ||
Line 34: | Line 35: | ||
Please be aware that <tt>nc</tt> is not aware of HTTP1.1 specification and is not sending 200 Ok, therefore it will not work out of box in curl, wget or lynx. Therefore please try this in a full flagged web browser like Chrome. | Please be aware that <tt>nc</tt> is not aware of HTTP1.1 specification and is not sending 200 Ok, therefore it will not work out of box in curl, wget or lynx. Therefore please try this in a full flagged web browser like Chrome. | ||
client@server2:$ curl -v --noproxy "server1.example.com" http://server1.example.com:8888 #will disable using a proxy for the "server1" | |||
client@server2 lynx <nowiki>http://server1.example.com: | client@server2:$ lynx <nowiki>http://server1.example.com:8080</nowiki> # |
Revision as of 10:25, 29 September 2016
Netcat in slow translation is the network version of cat command.
Send a string over a network
Start listening for a connection. The command below listen on TCP port 4444 for a new connections and displays any incoming data to a screen (default STDOUT) then it stops when the connection closes. Use -k
to continue listening after a transfer completes.
listen@server1# nc -l 4444
Send string to the listening server by redirecting the string(data) into nc
send@server2# echo "Hello Tom!" | nc server1.example.com 4444
Send Files through Netcat
This example will redirect any incoming data to a file
listen@server1# nc -l 4444 > file1.txt
Simple web server
This creates a simple web server
listen@server1:$ nc -kl 8080 < index.html #works in Chrome listen@server1:$ { echo -ne "HTTP/1.0 200 OK\r\n\r\n"; cat index.html; } | nc -l -p 8080 #improved version to correctly respond to a single HTTP1.1 request
This is a simple index.html file
cat index.html <html> <head> <title>Test Page</title> </head> <body> <h1>Level 1 header</h1> <h2>Subheading</h2> <p>Normal text here</p> </body> </html>
Please be aware that nc is not aware of HTTP1.1 specification and is not sending 200 Ok, therefore it will not work out of box in curl, wget or lynx. Therefore please try this in a full flagged web browser like Chrome.
client@server2:$ curl -v --noproxy "server1.example.com" http://server1.example.com:8888 #will disable using a proxy for the "server1" client@server2:$ lynx http://server1.example.com:8080 #