Handy Wrapper Script - Ephemeral Web Server

For when you need a quick service running at desktop to try out any of your own logic on your desktop before deciding to publish “primetime” on a server.

Here is an example of a script to put some “structure” around a very simple Web Server, which is a Python3 built-in capability, whenever you need it and only for as long as you need it.

It does NOT restart at boot, by design.

:slight_smile:

Script: LOCAL__PythonWebServer.sh
#!/bin/sh

###
###	Define some hightlighting sequences for reporting at terminal
###

boldON="\033[1m"
boldOFF="\033[0m"

orangeON="\033[33;1m"
orangeOFF="\033[0m"


###
###	Generate a random integer for port number within IANA "no-conflict" range
###

port=$( shuf -i 49152-65535 -n 1 )


###
###	Initialize some variables
###

#	Root of web service
CMS_ROOT="/DB001_F5/LOCAL__Web"

#	Date & Time of service start to facilitate entry lookup
now=$( date '+%Y%m%d-%H%M' )

#	Log files for standard and error messaging
LOG="${logDir}/CMS_server__${now}.log.txt"
ELOG="${logDir}/CMS_server__${now}.err.txt"


###
###	Verify required pre-conditions are met
###

cd "${CMS_ROOT}"
if [ $? -ne 0 ]
then
	echo "\n\t Unable to set "${CMS_ROOT}" as working directory for local web server. Unable to start!\n Bye!\n"
	exit 1
fi

logDir="${CMS_ROOT}/0_Logs"
if [ ! -d "${logDir}" ]
then
	mkdir -v "${logDir}"
fi

touch "${LOG}"
if [ ! -f "${LOG}" ]
then
	echo "\n\t ERROR:  no privilege to create '${LOG}'.  Unable to proceed.\n" ; exit 1
fi

touch "${ELOG}"
if [ ! -f "${ELOG}" ]
then
	echo "\n\t ERROR:  no privilege to create '${ELOG}'.  Unable to proceed.\n" ; exit 1
fi

###
###	Start Python-based web service
###

python3 -m http.server ${port} >"${LOG}" 2>"${ELOG}" &
service=$!

if [ $? -eq 0 ]
then
	echo "\n Python3 HTTP server ${boldON}${orangeON}[pid $!]${orangeOFF} is now online at randomly selected port #${boldON}${orangeON}${port}${orangeOFF} ..."
	echo "\t  LOG = '${LOG}' ..."
	echo "\t ELOG = '${ELOG}' ..."
	exit 0
else
	echo "\n\t ERROR:  FAILED to raise Python3 HTTP server online at port #${port} ..."
	echo ""
	more "${ELOG}"
	exit 1
fi