Delete comment from: Paul Buchheit
well that wasted a bit of my day.
how about a version that takes a document root and serves html files:
#!/bin/bash
# pass in document root as first arg
# web.sh ~/Sites/test
DOC_ROOT=$1
RESP=/tmp/webresp
[ -p $RESP ] || mkfifo $RESP
while true ; do
( cat $RESP ) | nc -l -p 9000 | tr -ud '\r' | (
REQ=`while read L && [ -n "$L" ] ; do echo "$L" ; done`
SERV_PATH=`echo "$REQ" | head -1 | cut -f2 -d" " `
FULL_PATH="$DOC_ROOT$SERV_PATH"
echo $FULL_PATH
if [ -f "$FULL_PATH" ]; then
RESP_BODY=`cat $FULL_PATH`
RESP_CODE="200 OK"
else
RESP_BODY="not found<br/><br/>$REQ"
RESP_CODE="404 NOT FOUND"
fi
echo "[`date '+%Y-%m-%d %H:%M:%S'`] $REQ" | head -1
cat >$RESP <<EOF
HTTP/1.0 $RESP_CODE
Cache-Control: private
Content-Type: text/html
Server: bash/2.0
Connection: Close
Content-Length: ${#RESP_BODY}
$RESP_BODY
EOF
)
done
Apr 15, 2007, 2:00:00 AM
Posted to Webserver in bash

