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.
![]()
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