Netcat ( nc -l ) as webserver

 
Thread Tools Search this Thread
Homework and Emergencies Emergency UNIX and Linux Support Netcat ( nc -l ) as webserver
# 1  
Old 12-14-2016
Lightbulb Netcat ( nc -l ) as webserver

Dear Linux guru's

I am trying to create a webserver using nc (netcat only) on RHEL 7.2 running on bash shell.

now the easy thing is to get nc listing to a port and respond back

Code:
$ while true; do { echo -e 'HTTP/1.0 200 OK\r\n'; set; } | nc -l 7877; done

This when called from a browser: http://My-server:7877 I get my env variables. Works perfect !! Love it Smilie

Now when I try http://My-server:7877?asd=1&something=2&other=hello

I was hopping to get QUERY_STRING env variable with all the values sent via browser GET method ! . However the env variable is not set. There is not variable set with these values.


Versions:

Bash
GNU bash, version 4.2.46(1)-release (x86_64-redhat-linux-gnu)

nc
Ncat: Version 6.40 ( Ncat - Netcat for the 21st Century )

redhat
Red Hat Enterprise Linux Server release 7.2

Dont want to use anything other than nc. Cannot install any tool or webserver or binaries. Please dont suggest that

And thanks all for reading my question Smilie.

Last edited by rbatte1; 12-15-2016 at 07:09 AM.. Reason: Changed ICODE tags to CODE tags
# 2  
Old 12-14-2016
Sorry, that - and the entire rest of the common gateway interface - is something a web server does for you.
# 3  
Old 12-15-2016
I made a named pipe and seems very close to getting my solution of garbing HTTP headers, Also noticed my browser does not Always send all the header each time.
(Chrome Version 54.0.2840.99 even in incognito )

My workaround (not solution) have a named pipe to communicated with nc.

Code:
$ mkfifo  webout

and then have the while loop to feed netcat(nc)

Code:
while true; do { echo -e 'HTTP/1.0 200 OK\r\n'; cat webout;  } | nc -vl 8080 >webout; done

I am just playing around with named pipe, looking to find something in the lines of:

Code:
nc -l PORT <webin > 2&1>webout

and then loop out with tail kind of thing on webin and webout. Any experts on FIFO's please suggest.

Last edited by chakrapani; 12-15-2016 at 11:50 AM.. Reason: typo
# 4  
Old 12-15-2016
This is going to be a royal pain to do in the shell. You're going to get stuck waiting on input from the web service while the web browser is stuck waiting on input for you. Named pipes are prone to this, even used one-way -- using a pair means almost guaranteed deadlock.

If you have Python or Perl, I'd look into writing it in that language instead. You would use a socket directly, avoiding the need for these deadlocks.

Another alternative, which I know you didn't want, would be the expect language. It can work pretty much the way you were expecting - run a program, check if it's got input, check if it's got output, decide what do do with it, move on.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Telnet vs netcat behavior

Currently I run a number of network tests using netcat that checks for an open port on a remote IP-address, using this syntax: netcat -v -w 5 -z 107.249.95.5 4488 For some reason, the netcat command above is hanging (although others work fine), but a telnet is showing a valid connection like... (4 Replies)
Discussion started by: ckmehta
4 Replies

2. IP Networking

Help with Netcat

Hi all, I know my question is regarding Windows and not Linux, but I simply need people who know Netcat pretty well and I'm guessing here is a good place for that. So on with my question. I'm doing some research, and I was playing around with netcat on a WinXP VM but I can't seem to get... (0 Replies)
Discussion started by: MrCrumbs
0 Replies

3. Shell Programming and Scripting

Post using nc(netcat)

Hi; I have a url like http://localhost:8080/examples/jsp/dates/nextPageToPost.jsp?name=ajay&password=pas&sex=Male&check=on&nationality=USA&description=aa&submit=submit in which i want to use nc for http post for parameters like "name","password"....etc can neone please help me how to do that... (3 Replies)
Discussion started by: ajaypadvi
3 Replies

4. Linux

Thank you radoulov for your help on netcat command (nc -lp)

Hello, Thank you very much for the line nc -lp <port> . I tried to run simple chat session with nc as it's shown in catonmatDOTorg but failed miserably with that syntax inspite of opening port 7777 by iptables . But your command example is working nicely. So a bagful of thanks :)) Only one... (0 Replies)
Discussion started by: vectrum
0 Replies

5. Solaris

Please help me to install netcat on solaris

hello guys, i want to install netcat on my solaris. after i tar and gunzip netcat i'm confuse what do i must to do ? please help me to install netcat on my solaris. I'm beginner :( (2 Replies)
Discussion started by: praset
2 Replies

6. UNIX and Linux Applications

netcat prints blank pages

Please direct me to the right forum tree if i am in the wrong section for this. i have netcat on a unix machine and there is no man nc or man netcat available. my command i am using is: cat $FILE1 | netcat -h $PRINTER -p 9100 (-h -p -d are the only flags available in this version of... (3 Replies)
Discussion started by: dunpealslyr
3 Replies

7. UNIX for Advanced & Expert Users

How does netcat manage the data it transfers ?

Hi all, When using netcat to transfer the data over socket, if no connection is established, how long will netcat keep the data; will it discard the "oldest" data ? Say for example I use "Some Command | netcat -l -p port", the command I use will generate a lot of output constantly, while no... (2 Replies)
Discussion started by: qiulang
2 Replies

8. Shell Programming and Scripting

netcat

Is there a way how to react on the message a client sent to the server? I would like as the client sent message to server: "get information such and such" and server would answer. Thank you for reply! (6 Replies)
Discussion started by: MartyIX
6 Replies

9. UNIX for Advanced & Expert Users

Netcat with Authentication?

I'd like to do a data transfer without encryption but with a guarantee that my data comes from a legit source. I'm thinking something that uses a public key scheme to sign the data. Does anyone know of something like that? Thanks! -Pileofrogs (1 Reply)
Discussion started by: pileofrogs
1 Replies

10. Programming

netcat like file transfer

Hi Folks I am not a c programmer .But i need help in writing a program which can do this any ideas on how to go about it . i start a server on the target server where files need to be copied start-server -port 5006 & ---start the server and listen it on a partcular port on the source... (2 Replies)
Discussion started by: linuxdba
2 Replies
Login or Register to Ask a Question