Ver Fonte

Log fix on first run & server.cfg security

* Stopped error on first run stating that ${consolelog} is missing.
* Changed the server.cfg to be named ${servicename} instead to address
some security concerns.
* Minor code tidy up
Daniel Gibbs há 12 anos atrás
pai
commit
aee07cdd93

+ 60 - 54
CounterStrike/csserver

@@ -3,7 +3,7 @@
 # Server Management Script
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
-# Version: 011013
+# Version: 101113
 
 #### Variables ####
 
@@ -12,10 +12,9 @@
 emailnotification="off"
 email="email@example.com"
 
-# Start vars
+# Start Variables
 defaultmap="de_aztec"
 port="27015"
-
 clientport="27005"
 parms="-game cstrike +map ${defaultmap} -strictportbind -port ${port} +clientport ${clientport}"
 
@@ -24,20 +23,21 @@ parms="-game cstrike +map ${defaultmap} -strictportbind -port ${port} +clientpor
 # Steam
 appid="90"
 
+# Server Details
+servicename="cs-server"
+gamename="Counter Strike 1.6"
+engine="goldsource"
+
 # Directorys
-rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )"
 selfname="$0"
 filesdir="${rootdir}/serverfiles"
-servercfg="${filesdir}/cstrike/server.cfg"
+servercfg="${filesdir}/cstrike/${servicename}.cfg"
 backupdir="${rootdir}/backups"
 
-# Server names
-servicename="cs-server"
-gamename="Counter Strike 1.6"
-
-engine="goldsource"
-servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'`
-rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'`
+# Server Details
+servername$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g')
+rcon$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g')
 
 # Logging
 logdays="7"
@@ -76,7 +76,7 @@ tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicen
 if [ ${tmuxwc} -eq 1 ];then
 	fn_serverquery
 	echo -en "\r[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} is already running"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog}
 	sleep 0.5
 	echo -en "\n"
 	exit
@@ -84,21 +84,24 @@ fi
 }
 
 fn_logmanager(){
+if [ ! -e ${consolelog} ];then
+	touch ${consolelog}
+fi
 # log manager will active if finds logs older than ${logdays}
 if [ `find ${scriptlogdir}/* -mtime +${logdays} |wc -l` -ne "0" ];then
 	echo -e "[\e[0;32m  OK  \e[0;39m] Starting log cleaner"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog}
 	echo -e "[\e[0;36m INFO \e[0;39m] Removing logs older than ${logdays} days"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog}
 	find ${scriptlogdir}/* -mtime +${logdays} |tee >> ${scriptlog}
 	find ${consolelogdir}/* -mtime +${logdays} |tee >> ${scriptlog}
-	scriptcount=`find ${scriptlogdir}/* -mtime +${logdays}|wc -l`
-	consolecount=`find ${consolelogdir}/* -mtime +${logdays}|wc -l`
+	scriptcount=$(find ${scriptlogdir}/* -mtime +${logdays}|wc -l)
+	consolecount=$(find ${consolelogdir}/* -mtime +${logdays}|wc -l)
 	count=$((${scriptcount} + ${consolecount}))
 	find ${scriptlogdir}/* -mtime +${logdays} -exec rm {} \;
 	find ${consolelogdir}/* -mtime +${logdays} -exec rm {} \;
 	echo -e "[\e[0;36m INFO \e[0;39m] Log cleaner removed ${count} log files"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog}
 fi
 }
 
@@ -123,10 +126,10 @@ esac
 done
 fn_stopserver
 echo -en "[ .... ] Starting ${servicename}: ${servername} debug mode"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog}
 sleep 0.5
 echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog}
 sleep 0.5
 echo -en "\n"
 cd ${filesdir}
@@ -157,7 +160,7 @@ sleep 0.5
 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicename}|wc -l)
 if [ ${tmuxwc} -eq 1 ];then
 	echo -e "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename} console"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog}
 	sleep 1
 	tmux attach-session -t ${servicename}
 else
@@ -207,17 +210,17 @@ if [ ${tmuxwc} -eq 1 ];then
 	done
 fi
 echo -en "[ .... ] Starting ${servicename}: ${servername} backup"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog}
 sleep 0.5
 echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername} backup"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog}
 sleep 1
 echo -en "\n"
 cd ${rootdir}
 mkdir ${backupdir} > /dev/null 2>&1
-tar -cvzf  ${backupdir}/${backupname}.tar.gz  --exclude '${backupdir}' ${rootdir}
+tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir}
 echo -en "\r${servicename} backup complete"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog}
 }
 
 fn_details(){
@@ -227,8 +230,8 @@ echo "============================"
 echo ""
 echo "${servername} Ports"
 echo "======================="
-servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'`
-rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'`
+servername=$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g')
+rcon=$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g')
 echo "Ports the server is currently using"
 echo ""
 echo "DIRECTION	DESCRIPTION		PORT"
@@ -259,7 +262,7 @@ if [ -f /etc/lsb-release ]; then
 elif [ -f /etc/debian_version ]; then
 	os="Debian $(cat /etc/debian_version)"
 elif [ -f /etc/redhat-release ]; then
-	os=`cat /etc/redhat-release`
+	os=$(cat /etc/redhat-release)
 else
 	os="$(uname -s) $(uname -r)"
 fi
@@ -316,7 +319,7 @@ echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${
 fn_emailtest(){
 fn_rootcheck
 fn_syscheck
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog}
 if [ "${emailnotification}" = "on" ];then
 	subject="${servicename} Email Test Notification - Testing ${servername}"
 	failurereason="Testing ${servicename} email notification"
@@ -324,7 +327,7 @@ if [ "${emailnotification}" = "on" ];then
 	fn_emailnotification
 else
 	echo -e "[\e[0;31m FAIL \e[0;39m] Email notification not enabled"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -335,22 +338,22 @@ fn_serverquery(){
 # detects if the server locks up
 if [ -f serverquery.py ];then
 	echo -e "[\e[0;36m INFO \e[0;39m] serverquery.py detected"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog}
 	echo -e "[\e[0;32m  OK  \e[0;39m] Querying ${servicename}: ${servername}: QUERYING"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog}
-	serverquery=`./serverquery.py 127.0.0.1 ${port} 2>&1`
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog}
+	serverquery=$(./serverquery.py 127.0.0.1 ${port} 2>&1)
 	sleep 1
 	if [ "${serverquery}" = "ERROR 1" ]||[ "${serverquery}" = "ERROR 2" ]||[ "${serverquery}" = "ERROR 3" ];then
 		echo -e "[\e[0;31m FAIL \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
 		sleep 1
 		echo -e "[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} has locked up!"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog}
 		sleep 1
 		fn_restartserver
 	else
 		echo -e "[\e[0;32m  OK  \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
 		sleep 1
 	fi
 fi
@@ -361,13 +364,13 @@ fn_rootcheck
 fn_syscheck
 fn_logmanager
 echo -en "[ .... ] Monitor is checking ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog}
 sleep 0.5
-updatecheck=`ps -ef|grep "${selfname} update"|grep -v grep|wc -l`
+updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l)
 if [ "${updatecheck}" = "0" ];then
 	fn_runcheck
 	echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
 	if [ "${emailnotification}" = "on" ];then
 		subject="${servicename} Monitor - Starting ${servername}"
 		failurereason="${servicename} process was not running"
@@ -377,14 +380,14 @@ if [ "${updatecheck}" = "0" ];then
 		fn_emailnotification
 	fi
 	sleep 0.5
-	echo -en "\n"	
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog}
+	echo -en "\n"
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog}
 	fn_startserver
 else
 	echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: Monitor detected ${servername} is currently checking for updates!"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog}
 	echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} will start when updating is complete"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog}
 fi
 }
 
@@ -392,14 +395,14 @@ fn_updateserver(){
 fn_rootcheck
 fn_syscheck
 echo -e "[\e[0;32m  OK  \e[0;39m] Updating ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog}
 cd ${rootdir}
 cd steamcmd
 ./steamcmd.sh +login anonymous +force_install_dir ${filesdir} +app_update ${appid} validate +quit |tee -a ${scriptlog}
 }
 
 fn_restartserver(){
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog}
 fn_stopserver
 fn_startserver
 }
@@ -409,15 +412,15 @@ fn_rootcheck
 fn_syscheck
 pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l)
 echo -en "[ .... ] Stopping ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog}
 sleep 0.5
 if [ "${pid}" == "0" ];then
 	echo -en "\r[\e[0;31m FAIL \e[0;39m] Stopping ${servicename}: ${servername} is already stopped"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog}
 else
 	tmux kill-session -t ${servicename}
 	echo -en "\r[\e[0;32m  OK  \e[0;39m] Stopping ${servicename}: ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -427,7 +430,7 @@ fn_startserver(){
 fn_rootcheck
 fn_syscheck
 echo -en "[ .... ] Starting ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog}
 sleep 0.5
 fn_runcheck
 fn_logmanager
@@ -435,14 +438,14 @@ mv ${scriptlog} ${scriptlogdate}
 mv ${consolelog} ${consolelogdate}
 cd ${filesdir}
 tmux new-session -d -s ${servicename} "./hlds_run ${parms} |tee -a ${consolelog}"
-tmuxwc=`tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l`
 sleep 1
+tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l)
 if [ ${tmuxwc} -eq 0 ];then
 	echo -en "\r[\e[0;31m FAIL \e[0;39m] Starting ${servicename}: Failed to start ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog}
 else
 	echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -516,7 +519,7 @@ while true; do
 	[Yy]* ) break;;
 	[Nn]* ) echo Exiting; return 1 ;;
 	* ) echo "Please answer yes or no.";;
-    esac
+	esac
 done
 fn_header
 fn_steamdl
@@ -552,6 +555,9 @@ echo "================================="
 	sleep 1
 	echo ""
 	echo "Creating server.cfg"
+	sleep 1
+	echo "Saving as:"
+	echo "${servercfg}"
 	touch ${servercfg}
 	touch ${filesdir}/cstrike/listip.cfg
 	touch ${filesdir}/cstrike/banned.cfg
@@ -653,4 +659,4 @@ case "$1" in
 	echo "Usage: $0 {start|stop|restart|update|monitor|email-test|details|backup|console|debug|install}"
 	exit 1;;
 esac
-exit
+exit

+ 59 - 52
CounterStrikeGlobalOffensive/csgoserver

@@ -3,7 +3,7 @@
 # Server Management Script
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
-# Version: 011013
+# Version: 101113
 
 #### Variables ####
 
@@ -12,7 +12,7 @@
 emailnotification="off"
 email="email@example.com"
 
-# Start vars
+# Start Variables
 defaultmap="de_dust"
 port="27015"
 sourcetvport="27020"
@@ -24,20 +24,21 @@ parms="-game csgo +map ${defaultmap} -strictportbind -port ${port} +tv_port ${so
 # Steam
 appid="740"
 
+# Server Details
+servicename="csgo-server"
+gamename="Counter Strike: Global Offensive"
+engine="source"
+
 # Directorys
-rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )"
 selfname="$0"
 filesdir="${rootdir}/serverfiles"
-servercfg="${filesdir}/csgo/cfg/server.cfg"
+servercfg="${filesdir}/csgo/cfg/${servicename}.cfg"
 backupdir="${rootdir}/backups"
 
 # Server Details
-servicename="csgo-server"
-gamename="Counter Strike: Global Offensive"
-
-engine="source"
-servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'`
-rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'`
+servername$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g')
+rcon$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g')
 
 # Logging
 logdays="7"
@@ -76,7 +77,7 @@ tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicen
 if [ ${tmuxwc} -eq 1 ];then
 	fn_serverquery
 	echo -en "\r[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} is already running"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog}
 	sleep 0.5
 	echo -en "\n"
 	exit
@@ -84,21 +85,24 @@ fi
 }
 
 fn_logmanager(){
+if [ ! -e ${consolelog} ];then
+	touch ${consolelog}
+fi
 # log manager will active if finds logs older than ${logdays}
 if [ `find ${scriptlogdir}/* -mtime +${logdays} |wc -l` -ne "0" ];then
 	echo -e "[\e[0;32m  OK  \e[0;39m] Starting log cleaner"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog}
 	echo -e "[\e[0;36m INFO \e[0;39m] Removing logs older than ${logdays} days"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog}
 	find ${scriptlogdir}/* -mtime +${logdays} |tee >> ${scriptlog}
 	find ${consolelogdir}/* -mtime +${logdays} |tee >> ${scriptlog}
-	scriptcount=`find ${scriptlogdir}/* -mtime +${logdays}|wc -l`
-	consolecount=`find ${consolelogdir}/* -mtime +${logdays}|wc -l`
+	scriptcount=$(find ${scriptlogdir}/* -mtime +${logdays}|wc -l)
+	consolecount=$(find ${consolelogdir}/* -mtime +${logdays}|wc -l)
 	count=$((${scriptcount} + ${consolecount}))
 	find ${scriptlogdir}/* -mtime +${logdays} -exec rm {} \;
 	find ${consolelogdir}/* -mtime +${logdays} -exec rm {} \;
 	echo -e "[\e[0;36m INFO \e[0;39m] Log cleaner removed ${count} log files"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog}
 fi
 }
 
@@ -123,10 +127,10 @@ esac
 done
 fn_stopserver
 echo -en "[ .... ] Starting ${servicename}: ${servername} debug mode"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog}
 sleep 0.5
 echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog}
 sleep 0.5
 echo -en "\n"
 cd ${filesdir}
@@ -157,7 +161,7 @@ sleep 0.5
 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicename}|wc -l)
 if [ ${tmuxwc} -eq 1 ];then
 	echo -e "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename} console"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog}
 	sleep 1
 	tmux attach-session -t ${servicename}
 else
@@ -207,17 +211,17 @@ if [ ${tmuxwc} -eq 1 ];then
 	done
 fi
 echo -en "[ .... ] Starting ${servicename}: ${servername} backup"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog}
 sleep 0.5
 echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername} backup"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog}
 sleep 1
 echo -en "\n"
 cd ${rootdir}
 mkdir ${backupdir} > /dev/null 2>&1
-tar -cvzf  ${backupdir}/${backupname}.tar.gz  --exclude '${backupdir}' ${rootdir}
+tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir}
 echo -en "\r${servicename} backup complete"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog}
 }
 
 fn_details(){
@@ -227,8 +231,8 @@ echo "============================"
 echo ""
 echo "${servername} Ports"
 echo "======================="
-servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'`
-rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'`
+servername=$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g')
+rcon=$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g')
 echo "Ports the server is currently using"
 echo ""
 echo "DIRECTION	DESCRIPTION		PORT"
@@ -259,7 +263,7 @@ if [ -f /etc/lsb-release ]; then
 elif [ -f /etc/debian_version ]; then
 	os="Debian $(cat /etc/debian_version)"
 elif [ -f /etc/redhat-release ]; then
-	os=`cat /etc/redhat-release`
+	os=$(cat /etc/redhat-release)
 else
 	os="$(uname -s) $(uname -r)"
 fi
@@ -316,7 +320,7 @@ echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${
 fn_emailtest(){
 fn_rootcheck
 fn_syscheck
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog}
 if [ "${emailnotification}" = "on" ];then
 	subject="${servicename} Email Test Notification - Testing ${servername}"
 	failurereason="Testing ${servicename} email notification"
@@ -324,7 +328,7 @@ if [ "${emailnotification}" = "on" ];then
 	fn_emailnotification
 else
 	echo -e "[\e[0;31m FAIL \e[0;39m] Email notification not enabled"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -335,22 +339,22 @@ fn_serverquery(){
 # detects if the server locks up
 if [ -f serverquery.py ];then
 	echo -e "[\e[0;36m INFO \e[0;39m] serverquery.py detected"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog}
 	echo -e "[\e[0;32m  OK  \e[0;39m] Querying ${servicename}: ${servername}: QUERYING"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog}
-	serverquery=`./serverquery.py 127.0.0.1 ${port} 2>&1`
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog}
+	serverquery=$(./serverquery.py 127.0.0.1 ${port} 2>&1)
 	sleep 1
 	if [ "${serverquery}" = "ERROR 1" ]||[ "${serverquery}" = "ERROR 2" ]||[ "${serverquery}" = "ERROR 3" ];then
 		echo -e "[\e[0;31m FAIL \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
 		sleep 1
 		echo -e "[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} has locked up!"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog}
 		sleep 1
 		fn_restartserver
 	else
 		echo -e "[\e[0;32m  OK  \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
 		sleep 1
 	fi
 fi
@@ -361,13 +365,13 @@ fn_rootcheck
 fn_syscheck
 fn_logmanager
 echo -en "[ .... ] Monitor is checking ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog}
 sleep 0.5
-updatecheck=`ps -ef|grep "${selfname} update"|grep -v grep|wc -l`
+updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l)
 if [ "${updatecheck}" = "0" ];then
 	fn_runcheck
 	echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
 	if [ "${emailnotification}" = "on" ];then
 		subject="${servicename} Monitor - Starting ${servername}"
 		failurereason="${servicename} process was not running"
@@ -377,14 +381,14 @@ if [ "${updatecheck}" = "0" ];then
 		fn_emailnotification
 	fi
 	sleep 0.5
-	echo -en "\n"	
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog}
+	echo -en "\n"
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog}
 	fn_startserver
 else
 	echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: Monitor detected ${servername} is currently checking for updates!"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog}
 	echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} will start when updating is complete"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog}
 fi
 }
 
@@ -392,14 +396,14 @@ fn_updateserver(){
 fn_rootcheck
 fn_syscheck
 echo -e "[\e[0;32m  OK  \e[0;39m] Updating ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog}
 cd ${rootdir}
 cd steamcmd
 ./steamcmd.sh +login anonymous +force_install_dir ${filesdir} +app_update ${appid} validate +quit |tee -a ${scriptlog}
 }
 
 fn_restartserver(){
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog}
 fn_stopserver
 fn_startserver
 }
@@ -409,15 +413,15 @@ fn_rootcheck
 fn_syscheck
 pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l)
 echo -en "[ .... ] Stopping ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog}
 sleep 0.5
 if [ "${pid}" == "0" ];then
 	echo -en "\r[\e[0;31m FAIL \e[0;39m] Stopping ${servicename}: ${servername} is already stopped"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog}
 else
 	tmux kill-session -t ${servicename}
 	echo -en "\r[\e[0;32m  OK  \e[0;39m] Stopping ${servicename}: ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -427,7 +431,7 @@ fn_startserver(){
 fn_rootcheck
 fn_syscheck
 echo -en "[ .... ] Starting ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog}
 sleep 0.5
 fn_runcheck
 fn_logmanager
@@ -435,14 +439,14 @@ mv ${scriptlog} ${scriptlogdate}
 mv ${consolelog} ${consolelogdate}
 cd ${filesdir}
 tmux new-session -d -s ${servicename} "./srcds_run ${parms} |tee -a ${consolelog}"
-tmuxwc=`tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l`
 sleep 1
+tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l)
 if [ ${tmuxwc} -eq 0 ];then
 	echo -en "\r[\e[0;31m FAIL \e[0;39m] Starting ${servicename}: Failed to start ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog}
 else
 	echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -516,7 +520,7 @@ while true; do
 	[Yy]* ) break;;
 	[Nn]* ) echo Exiting; return 1 ;;
 	* ) echo "Please answer yes or no.";;
-    esac
+	esac
 done
 fn_header
 fn_steamdl
@@ -551,6 +555,9 @@ echo "================================="
 	sleep 1
 	echo ""
 	echo "Creating server.cfg"
+	sleep 1
+	echo "Saving as:"
+	echo "${servercfg}"
 	touch ${servercfg}
 	{
 		echo -e "// server name"
@@ -627,4 +634,4 @@ case "$1" in
 	echo "Usage: $0 {start|stop|restart|update|monitor|email-test|details|backup|console|debug|install}"
 	exit 1;;
 esac
-exit
+exit

+ 59 - 51
CounterStrikeSource/cssserver

@@ -3,7 +3,7 @@
 # Server Management Script
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
-# Version: 011013
+# Version: 101113
 
 #### Variables ####
 
@@ -12,7 +12,7 @@
 emailnotification="off"
 email="email@example.com"
 
-# Start vars
+# Start Variables
 defaultmap="de_dust"
 port="27015"
 sourcetvport="27020"
@@ -24,19 +24,21 @@ parms="-game cstrike +map ${defaultmap} -strictportbind -port ${port} +tv_port $
 # Steam
 appid="232330"
 
+# Server Details
+servicename="css-server"
+gamename="Counter Strike: Source"
+engine="source"
+
 # Directorys
-rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )"
 selfname="$0"
 filesdir="${rootdir}/serverfiles"
-servercfg="${filesdir}/cstrike/cfg/server.cfg"
+servercfg="${filesdir}/csgo/cfg/${servicename}.cfg"
 backupdir="${rootdir}/backups"
 
 # Server Details
-servicename="css-server"
-gamename="Counter Strike: Source"
-engine="source"
-servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'`
-rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'`
+servername$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g')
+rcon$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g')
 
 # Logging
 logdays="7"
@@ -75,7 +77,7 @@ tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicen
 if [ ${tmuxwc} -eq 1 ];then
 	fn_serverquery
 	echo -en "\r[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} is already running"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog}
 	sleep 0.5
 	echo -en "\n"
 	exit
@@ -83,21 +85,24 @@ fi
 }
 
 fn_logmanager(){
+if [ ! -e ${consolelog} ];then
+	touch ${consolelog}
+fi
 # log manager will active if finds logs older than ${logdays}
 if [ `find ${scriptlogdir}/* -mtime +${logdays} |wc -l` -ne "0" ];then
 	echo -e "[\e[0;32m  OK  \e[0;39m] Starting log cleaner"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog}
 	echo -e "[\e[0;36m INFO \e[0;39m] Removing logs older than ${logdays} days"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog}
 	find ${scriptlogdir}/* -mtime +${logdays} |tee >> ${scriptlog}
 	find ${consolelogdir}/* -mtime +${logdays} |tee >> ${scriptlog}
-	scriptcount=`find ${scriptlogdir}/* -mtime +${logdays}|wc -l`
-	consolecount=`find ${consolelogdir}/* -mtime +${logdays}|wc -l`
+	scriptcount=$(find ${scriptlogdir}/* -mtime +${logdays}|wc -l)
+	consolecount=$(find ${consolelogdir}/* -mtime +${logdays}|wc -l)
 	count=$((${scriptcount} + ${consolecount}))
 	find ${scriptlogdir}/* -mtime +${logdays} -exec rm {} \;
 	find ${consolelogdir}/* -mtime +${logdays} -exec rm {} \;
 	echo -e "[\e[0;36m INFO \e[0;39m] Log cleaner removed ${count} log files"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog}
 fi
 }
 
@@ -122,10 +127,10 @@ esac
 done
 fn_stopserver
 echo -en "[ .... ] Starting ${servicename}: ${servername} debug mode"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog}
 sleep 0.5
 echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog}
 sleep 0.5
 echo -en "\n"
 cd ${filesdir}
@@ -156,7 +161,7 @@ sleep 0.5
 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicename}|wc -l)
 if [ ${tmuxwc} -eq 1 ];then
 	echo -e "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename} console"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog}
 	sleep 1
 	tmux attach-session -t ${servicename}
 else
@@ -206,17 +211,17 @@ if [ ${tmuxwc} -eq 1 ];then
 	done
 fi
 echo -en "[ .... ] Starting ${servicename}: ${servername} backup"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog}
 sleep 0.5
 echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername} backup"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog}
 sleep 1
 echo -en "\n"
 cd ${rootdir}
 mkdir ${backupdir} > /dev/null 2>&1
-tar -cvzf  ${backupdir}/${backupname}.tar.gz  --exclude '${backupdir}' ${rootdir}
+tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir}
 echo -en "\r${servicename} backup complete"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog}
 }
 
 fn_details(){
@@ -226,8 +231,8 @@ echo "============================"
 echo ""
 echo "${servername} Ports"
 echo "======================="
-servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'`
-rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'`
+servername=$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g')
+rcon=$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g')
 echo "Ports the server is currently using"
 echo ""
 echo "DIRECTION	DESCRIPTION		PORT"
@@ -258,7 +263,7 @@ if [ -f /etc/lsb-release ]; then
 elif [ -f /etc/debian_version ]; then
 	os="Debian $(cat /etc/debian_version)"
 elif [ -f /etc/redhat-release ]; then
-	os=`cat /etc/redhat-release`
+	os=$(cat /etc/redhat-release)
 else
 	os="$(uname -s) $(uname -r)"
 fi
@@ -315,7 +320,7 @@ echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${
 fn_emailtest(){
 fn_rootcheck
 fn_syscheck
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog}
 if [ "${emailnotification}" = "on" ];then
 	subject="${servicename} Email Test Notification - Testing ${servername}"
 	failurereason="Testing ${servicename} email notification"
@@ -323,7 +328,7 @@ if [ "${emailnotification}" = "on" ];then
 	fn_emailnotification
 else
 	echo -e "[\e[0;31m FAIL \e[0;39m] Email notification not enabled"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -334,22 +339,22 @@ fn_serverquery(){
 # detects if the server locks up
 if [ -f serverquery.py ];then
 	echo -e "[\e[0;36m INFO \e[0;39m] serverquery.py detected"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog}
 	echo -e "[\e[0;32m  OK  \e[0;39m] Querying ${servicename}: ${servername}: QUERYING"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog}
-	serverquery=`./serverquery.py 127.0.0.1 ${port} 2>&1`
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog}
+	serverquery=$(./serverquery.py 127.0.0.1 ${port} 2>&1)
 	sleep 1
 	if [ "${serverquery}" = "ERROR 1" ]||[ "${serverquery}" = "ERROR 2" ]||[ "${serverquery}" = "ERROR 3" ];then
 		echo -e "[\e[0;31m FAIL \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
 		sleep 1
 		echo -e "[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} has locked up!"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog}
 		sleep 1
 		fn_restartserver
 	else
 		echo -e "[\e[0;32m  OK  \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
 		sleep 1
 	fi
 fi
@@ -360,13 +365,13 @@ fn_rootcheck
 fn_syscheck
 fn_logmanager
 echo -en "[ .... ] Monitor is checking ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog}
 sleep 0.5
-updatecheck=`ps -ef|grep "${selfname} update"|grep -v grep|wc -l`
+updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l)
 if [ "${updatecheck}" = "0" ];then
 	fn_runcheck
 	echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
 	if [ "${emailnotification}" = "on" ];then
 		subject="${servicename} Monitor - Starting ${servername}"
 		failurereason="${servicename} process was not running"
@@ -376,14 +381,14 @@ if [ "${updatecheck}" = "0" ];then
 		fn_emailnotification
 	fi
 	sleep 0.5
-	echo -en "\n"	
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog}
+	echo -en "\n"
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog}
 	fn_startserver
 else
 	echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: Monitor detected ${servername} is currently checking for updates!"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog}
 	echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} will start when updating is complete"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog}
 fi
 }
 
@@ -391,14 +396,14 @@ fn_updateserver(){
 fn_rootcheck
 fn_syscheck
 echo -e "[\e[0;32m  OK  \e[0;39m] Updating ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog}
 cd ${rootdir}
 cd steamcmd
 ./steamcmd.sh +login anonymous +force_install_dir ${filesdir} +app_update ${appid} validate +quit |tee -a ${scriptlog}
 }
 
 fn_restartserver(){
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog}
 fn_stopserver
 fn_startserver
 }
@@ -408,15 +413,15 @@ fn_rootcheck
 fn_syscheck
 pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l)
 echo -en "[ .... ] Stopping ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog}
 sleep 0.5
 if [ "${pid}" == "0" ];then
 	echo -en "\r[\e[0;31m FAIL \e[0;39m] Stopping ${servicename}: ${servername} is already stopped"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog}
 else
 	tmux kill-session -t ${servicename}
 	echo -en "\r[\e[0;32m  OK  \e[0;39m] Stopping ${servicename}: ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -426,7 +431,7 @@ fn_startserver(){
 fn_rootcheck
 fn_syscheck
 echo -en "[ .... ] Starting ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog}
 sleep 0.5
 fn_runcheck
 fn_logmanager
@@ -434,14 +439,14 @@ mv ${scriptlog} ${scriptlogdate}
 mv ${consolelog} ${consolelogdate}
 cd ${filesdir}
 tmux new-session -d -s ${servicename} "./srcds_run ${parms} |tee -a ${consolelog}"
-tmuxwc=`tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l`
 sleep 1
+tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l)
 if [ ${tmuxwc} -eq 0 ];then
 	echo -en "\r[\e[0;31m FAIL \e[0;39m] Starting ${servicename}: Failed to start ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog}
 else
 	echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -515,7 +520,7 @@ while true; do
 	[Yy]* ) break;;
 	[Nn]* ) echo Exiting; return 1 ;;
 	* ) echo "Please answer yes or no.";;
-    esac
+	esac
 done
 fn_header
 fn_steamdl
@@ -550,6 +555,9 @@ echo "================================="
 	sleep 1
 	echo ""
 	echo "Creating server.cfg"
+	sleep 1
+	echo "Saving as:"
+	echo "${servercfg}"
 	touch ${servercfg}
 	{
 		echo -e "// server name"
@@ -626,4 +634,4 @@ case "$1" in
 	echo "Usage: $0 {start|stop|restart|update|monitor|email-test|details|backup|console|debug|install}"
 	exit 1;;
 esac
-exit
+exit

+ 63 - 54
DayOfDefeatSource/dodsserver

@@ -12,7 +12,7 @@
 emailnotification="off"
 email="email@example.com"
 
-# Start vars
+# Start Variables
 defaultmap="dod_Anzio"
 port="27015"
 sourcetvport="27020"
@@ -24,19 +24,20 @@ parms="-game dod +map ${defaultmap} -strictportbind -port ${port} +tv_port ${sou
 # Steam
 appid="232290"
 
+# Server Details
+servicename="dods-server"
+gamename="Day of Defeat: Source"
+engine="source"
+
 # Directorys
-rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )"
 selfname="$0"
 filesdir="${rootdir}/serverfiles"
-servercfg="${filesdir}/dod/cfg/server.cfg"
+servercfg="${filesdir}/csgo/cfg/${servicename}.cfg"
 backupdir="${rootdir}/backups"
 
-# Server Details
-servicename="dods-server"
-gamename="Day of Defeat: Source"
-engine="source"
-servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'`
-rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'`
+servername$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g')
+rcon$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g')
 
 # Logging
 logdays="7"
@@ -75,7 +76,7 @@ tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicen
 if [ ${tmuxwc} -eq 1 ];then
 	fn_serverquery
 	echo -en "\r[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} is already running"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog}
 	sleep 0.5
 	echo -en "\n"
 	exit
@@ -83,21 +84,24 @@ fi
 }
 
 fn_logmanager(){
+if [ ! -e ${consolelog} ];then
+	touch ${consolelog}
+fi
 # log manager will active if finds logs older than ${logdays}
 if [ `find ${scriptlogdir}/* -mtime +${logdays} |wc -l` -ne "0" ];then
 	echo -e "[\e[0;32m  OK  \e[0;39m] Starting log cleaner"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog}
 	echo -e "[\e[0;36m INFO \e[0;39m] Removing logs older than ${logdays} days"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog}
 	find ${scriptlogdir}/* -mtime +${logdays} |tee >> ${scriptlog}
 	find ${consolelogdir}/* -mtime +${logdays} |tee >> ${scriptlog}
-	scriptcount=`find ${scriptlogdir}/* -mtime +${logdays}|wc -l`
-	consolecount=`find ${consolelogdir}/* -mtime +${logdays}|wc -l`
+	scriptcount=$(find ${scriptlogdir}/* -mtime +${logdays}|wc -l)
+	consolecount=$(find ${consolelogdir}/* -mtime +${logdays}|wc -l)
 	count=$((${scriptcount} + ${consolecount}))
 	find ${scriptlogdir}/* -mtime +${logdays} -exec rm {} \;
 	find ${consolelogdir}/* -mtime +${logdays} -exec rm {} \;
 	echo -e "[\e[0;36m INFO \e[0;39m] Log cleaner removed ${count} log files"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog}
 fi
 }
 
@@ -122,10 +126,10 @@ esac
 done
 fn_stopserver
 echo -en "[ .... ] Starting ${servicename}: ${servername} debug mode"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog}
 sleep 0.5
 echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog}
 sleep 0.5
 echo -en "\n"
 cd ${filesdir}
@@ -156,7 +160,7 @@ sleep 0.5
 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicename}|wc -l)
 if [ ${tmuxwc} -eq 1 ];then
 	echo -e "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename} console"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog}
 	sleep 1
 	tmux attach-session -t ${servicename}
 else
@@ -206,17 +210,17 @@ if [ ${tmuxwc} -eq 1 ];then
 	done
 fi
 echo -en "[ .... ] Starting ${servicename}: ${servername} backup"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog}
 sleep 0.5
 echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername} backup"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog}
 sleep 1
 echo -en "\n"
 cd ${rootdir}
 mkdir ${backupdir} > /dev/null 2>&1
-tar -cvzf  ${backupdir}/${backupname}.tar.gz  --exclude '${backupdir}' ${rootdir}
+tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir}
 echo -en "\r${servicename} backup complete"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog}
 }
 
 fn_details(){
@@ -226,8 +230,8 @@ echo "============================"
 echo ""
 echo "${servername} Ports"
 echo "======================="
-servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'`
-rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'`
+servername=$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g')
+rcon=$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g')
 echo "Ports the server is currently using"
 echo ""
 echo "DIRECTION	DESCRIPTION		PORT"
@@ -258,7 +262,7 @@ if [ -f /etc/lsb-release ]; then
 elif [ -f /etc/debian_version ]; then
 	os="Debian $(cat /etc/debian_version)"
 elif [ -f /etc/redhat-release ]; then
-	os=`cat /etc/redhat-release`
+	os=$(cat /etc/redhat-release)
 else
 	os="$(uname -s) $(uname -r)"
 fi
@@ -299,21 +303,23 @@ echo -e "========================================\nLogs\n=======================
 echo -e "Script log\n===================\n"
 }|tee ${scriptlogdir}/${servicename}-email.log > /dev/null 2>&1
 tail -25 ${scriptlog} >> ${emaillog}
-echo -e "\n\nConsole log\n====================\n" >> ${emaillog}
-tail -25 ${consolelog} >> ${emaillog}
+if [ ! -z ${consolelog} ];then
+	echo -e "\n\nConsole log\n====================\n" >> ${emaillog}
+	tail -25 ${consolelog} >> ${emaillog}
+fi
 if [ ! -z ${gamelogdir} ];then
 	echo -e "\n\nServer log\n====================\n" >> ${emaillog}
-	tail ${gamelogdir}/*|grep -v "==>"|sed '/^$/d' >> ${emaillog}
+	tail ${gamelogdir}/*|grep -v "==>"|sed '/^$/d'|tail -25 >> ${emaillog}
 fi
 mail -s "${subject}" ${email} < ${emaillog}
 echo -en "[\e[0;36m INFO \e[0;39m] Sent email notification to ${email}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${email}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${email}" >> ${scriptlog}
 }
 
 fn_emailtest(){
 fn_rootcheck
 fn_syscheck
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog}
 if [ "${emailnotification}" = "on" ];then
 	subject="${servicename} Email Test Notification - Testing ${servername}"
 	failurereason="Testing ${servicename} email notification"
@@ -321,7 +327,7 @@ if [ "${emailnotification}" = "on" ];then
 	fn_emailnotification
 else
 	echo -e "[\e[0;31m FAIL \e[0;39m] Email notification not enabled"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -332,22 +338,22 @@ fn_serverquery(){
 # detects if the server locks up
 if [ -f serverquery.py ];then
 	echo -e "[\e[0;36m INFO \e[0;39m] serverquery.py detected"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog}
 	echo -e "[\e[0;32m  OK  \e[0;39m] Querying ${servicename}: ${servername}: QUERYING"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog}
-	serverquery=`./serverquery.py 127.0.0.1 ${port} 2>&1`
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog}
+	serverquery=$(./serverquery.py 127.0.0.1 ${port} 2>&1)
 	sleep 1
 	if [ "${serverquery}" = "ERROR 1" ]||[ "${serverquery}" = "ERROR 2" ]||[ "${serverquery}" = "ERROR 3" ];then
 		echo -e "[\e[0;31m FAIL \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
 		sleep 1
 		echo -e "[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} has locked up!"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog}
 		sleep 1
 		fn_restartserver
 	else
 		echo -e "[\e[0;32m  OK  \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
 		sleep 1
 	fi
 fi
@@ -358,13 +364,13 @@ fn_rootcheck
 fn_syscheck
 fn_logmanager
 echo -en "[ .... ] Monitor is checking ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog}
 sleep 0.5
-updatecheck=`ps -ef|grep "${selfname} update"|grep -v grep|wc -l`
+updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l)
 if [ "${updatecheck}" = "0" ];then
 	fn_runcheck
 	echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
 	if [ "${emailnotification}" = "on" ];then
 		subject="${servicename} Monitor - Starting ${servername}"
 		failurereason="${servicename} process was not running"
@@ -374,14 +380,14 @@ if [ "${updatecheck}" = "0" ];then
 		fn_emailnotification
 	fi
 	sleep 0.5
-	echo -en "\n"	
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog}
+	echo -en "\n"
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog}
 	fn_startserver
 else
 	echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: Monitor detected ${servername} is currently checking for updates!"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog}
 	echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} will start when updating is complete"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog}
 fi
 }
 
@@ -389,14 +395,14 @@ fn_updateserver(){
 fn_rootcheck
 fn_syscheck
 echo -e "[\e[0;32m  OK  \e[0;39m] Updating ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog}
 cd ${rootdir}
 cd steamcmd
 ./steamcmd.sh +login anonymous +force_install_dir ${filesdir} +app_update ${appid} validate +quit |tee -a ${scriptlog}
 }
 
 fn_restartserver(){
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog}
 fn_stopserver
 fn_startserver
 }
@@ -406,15 +412,15 @@ fn_rootcheck
 fn_syscheck
 pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l)
 echo -en "[ .... ] Stopping ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog}
 sleep 0.5
 if [ "${pid}" == "0" ];then
 	echo -en "\r[\e[0;31m FAIL \e[0;39m] Stopping ${servicename}: ${servername} is already stopped"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog}
 else
 	tmux kill-session -t ${servicename}
 	echo -en "\r[\e[0;32m  OK  \e[0;39m] Stopping ${servicename}: ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -424,7 +430,7 @@ fn_startserver(){
 fn_rootcheck
 fn_syscheck
 echo -en "[ .... ] Starting ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog}
 sleep 0.5
 fn_runcheck
 fn_logmanager
@@ -432,14 +438,14 @@ mv ${scriptlog} ${scriptlogdate}
 mv ${consolelog} ${consolelogdate}
 cd ${filesdir}
 tmux new-session -d -s ${servicename} "./srcds_run ${parms} |tee -a ${consolelog}"
-tmuxwc=`tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l`
 sleep 1
+tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l)
 if [ ${tmuxwc} -eq 0 ];then
 	echo -en "\r[\e[0;31m FAIL \e[0;39m] Starting ${servicename}: Failed to start ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog}
 else
 	echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -513,7 +519,7 @@ while true; do
 	[Yy]* ) break;;
 	[Nn]* ) echo Exiting; return 1 ;;
 	* ) echo "Please answer yes or no.";;
-    esac
+	esac
 done
 fn_header
 fn_steamdl
@@ -548,6 +554,9 @@ echo "================================="
 	sleep 1
 	echo ""
 	echo "Creating server.cfg"
+	sleep 1
+	echo "Saving as:"
+	echo "${servercfg}"
 	touch ${servercfg}
 	{
 		echo -e "// server name"

+ 59 - 51
HalfLife2Deathmatch/hl2dmserver

@@ -3,7 +3,7 @@
 # Server Management Script
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
-# Version: 011013
+# Version: 101113
 
 #### Variables ####
 
@@ -12,7 +12,7 @@
 emailnotification="off"
 email="email@example.com"
 
-# Start vars
+# Start Variables
 defaultmap="dm_lockdown"
 port="27015"
 sourcetvport="27020"
@@ -24,19 +24,21 @@ parms="-game hl2mp +map ${defaultmap} -strictportbind -port ${port} +tv_port ${s
 # Steam
 appid="232370"
 
+# Server Details
+servicename="hl2dm-server"
+gamename="Half Life 2: Deathmatch"
+engine="source"
+
 # Directorys
-rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )"
 selfname="$0"
 filesdir="${rootdir}/serverfiles"
-servercfg="${filesdir}/hl2mp/cfg/server.cfg"
+servercfg="${filesdir}/hl2mp/cfg/${servicename}.cfg"
 backupdir="${rootdir}/backups"
 
 # Server Details
-servicename="hl2dm-server"
-gamename="Half Life 2: Deathmatch"
-engine="source"
-servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'`
-rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'`
+servername$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g')
+rcon$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g')
 
 # Logging
 logdays="7"
@@ -75,7 +77,7 @@ tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicen
 if [ ${tmuxwc} -eq 1 ];then
 	fn_serverquery
 	echo -en "\r[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} is already running"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog}
 	sleep 0.5
 	echo -en "\n"
 	exit
@@ -83,21 +85,24 @@ fi
 }
 
 fn_logmanager(){
+if [ ! -e ${consolelog} ];then
+	touch ${consolelog}
+fi
 # log manager will active if finds logs older than ${logdays}
 if [ `find ${scriptlogdir}/* -mtime +${logdays} |wc -l` -ne "0" ];then
 	echo -e "[\e[0;32m  OK  \e[0;39m] Starting log cleaner"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog}
 	echo -e "[\e[0;36m INFO \e[0;39m] Removing logs older than ${logdays} days"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog}
 	find ${scriptlogdir}/* -mtime +${logdays} |tee >> ${scriptlog}
 	find ${consolelogdir}/* -mtime +${logdays} |tee >> ${scriptlog}
-	scriptcount=`find ${scriptlogdir}/* -mtime +${logdays}|wc -l`
-	consolecount=`find ${consolelogdir}/* -mtime +${logdays}|wc -l`
+	scriptcount=$(find ${scriptlogdir}/* -mtime +${logdays}|wc -l)
+	consolecount=$(find ${consolelogdir}/* -mtime +${logdays}|wc -l)
 	count=$((${scriptcount} + ${consolecount}))
 	find ${scriptlogdir}/* -mtime +${logdays} -exec rm {} \;
 	find ${consolelogdir}/* -mtime +${logdays} -exec rm {} \;
 	echo -e "[\e[0;36m INFO \e[0;39m] Log cleaner removed ${count} log files"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog}
 fi
 }
 
@@ -122,10 +127,10 @@ esac
 done
 fn_stopserver
 echo -en "[ .... ] Starting ${servicename}: ${servername} debug mode"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog}
 sleep 0.5
 echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog}
 sleep 0.5
 echo -en "\n"
 cd ${filesdir}
@@ -156,7 +161,7 @@ sleep 0.5
 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicename}|wc -l)
 if [ ${tmuxwc} -eq 1 ];then
 	echo -e "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename} console"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog}
 	sleep 1
 	tmux attach-session -t ${servicename}
 else
@@ -206,17 +211,17 @@ if [ ${tmuxwc} -eq 1 ];then
 	done
 fi
 echo -en "[ .... ] Starting ${servicename}: ${servername} backup"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog}
 sleep 0.5
 echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername} backup"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog}
 sleep 1
 echo -en "\n"
 cd ${rootdir}
 mkdir ${backupdir} > /dev/null 2>&1
-tar -cvzf  ${backupdir}/${backupname}.tar.gz  --exclude '${backupdir}' ${rootdir}
+tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir}
 echo -en "\r${servicename} backup complete"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog}
 }
 
 fn_details(){
@@ -226,8 +231,8 @@ echo "============================"
 echo ""
 echo "${servername} Ports"
 echo "======================="
-servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'`
-rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'`
+servername=$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g')
+rcon=$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g')
 echo "Ports the server is currently using"
 echo ""
 echo "DIRECTION	DESCRIPTION		PORT"
@@ -258,7 +263,7 @@ if [ -f /etc/lsb-release ]; then
 elif [ -f /etc/debian_version ]; then
 	os="Debian $(cat /etc/debian_version)"
 elif [ -f /etc/redhat-release ]; then
-	os=`cat /etc/redhat-release`
+	os=$(cat /etc/redhat-release)
 else
 	os="$(uname -s) $(uname -r)"
 fi
@@ -315,7 +320,7 @@ echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${
 fn_emailtest(){
 fn_rootcheck
 fn_syscheck
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog}
 if [ "${emailnotification}" = "on" ];then
 	subject="${servicename} Email Test Notification - Testing ${servername}"
 	failurereason="Testing ${servicename} email notification"
@@ -323,7 +328,7 @@ if [ "${emailnotification}" = "on" ];then
 	fn_emailnotification
 else
 	echo -e "[\e[0;31m FAIL \e[0;39m] Email notification not enabled"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -334,22 +339,22 @@ fn_serverquery(){
 # detects if the server locks up
 if [ -f serverquery.py ];then
 	echo -e "[\e[0;36m INFO \e[0;39m] serverquery.py detected"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog}
 	echo -e "[\e[0;32m  OK  \e[0;39m] Querying ${servicename}: ${servername}: QUERYING"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog}
-	serverquery=`./serverquery.py 127.0.0.1 ${port} 2>&1`
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog}
+	serverquery=$(./serverquery.py 127.0.0.1 ${port} 2>&1)
 	sleep 1
 	if [ "${serverquery}" = "ERROR 1" ]||[ "${serverquery}" = "ERROR 2" ]||[ "${serverquery}" = "ERROR 3" ];then
 		echo -e "[\e[0;31m FAIL \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
 		sleep 1
 		echo -e "[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} has locked up!"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog}
 		sleep 1
 		fn_restartserver
 	else
 		echo -e "[\e[0;32m  OK  \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
 		sleep 1
 	fi
 fi
@@ -360,13 +365,13 @@ fn_rootcheck
 fn_syscheck
 fn_logmanager
 echo -en "[ .... ] Monitor is checking ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog}
 sleep 0.5
-updatecheck=`ps -ef|grep "${selfname} update"|grep -v grep|wc -l`
+updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l)
 if [ "${updatecheck}" = "0" ];then
 	fn_runcheck
 	echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
 	if [ "${emailnotification}" = "on" ];then
 		subject="${servicename} Monitor - Starting ${servername}"
 		failurereason="${servicename} process was not running"
@@ -376,14 +381,14 @@ if [ "${updatecheck}" = "0" ];then
 		fn_emailnotification
 	fi
 	sleep 0.5
-	echo -en "\n"	
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog}
+	echo -en "\n"
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog}
 	fn_startserver
 else
 	echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: Monitor detected ${servername} is currently checking for updates!"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog}
 	echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} will start when updating is complete"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog}
 fi
 }
 
@@ -391,14 +396,14 @@ fn_updateserver(){
 fn_rootcheck
 fn_syscheck
 echo -e "[\e[0;32m  OK  \e[0;39m] Updating ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog}
 cd ${rootdir}
 cd steamcmd
 ./steamcmd.sh +login anonymous +force_install_dir ${filesdir} +app_update ${appid} validate +quit |tee -a ${scriptlog}
 }
 
 fn_restartserver(){
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog}
 fn_stopserver
 fn_startserver
 }
@@ -408,15 +413,15 @@ fn_rootcheck
 fn_syscheck
 pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l)
 echo -en "[ .... ] Stopping ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog}
 sleep 0.5
 if [ "${pid}" == "0" ];then
 	echo -en "\r[\e[0;31m FAIL \e[0;39m] Stopping ${servicename}: ${servername} is already stopped"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog}
 else
 	tmux kill-session -t ${servicename}
 	echo -en "\r[\e[0;32m  OK  \e[0;39m] Stopping ${servicename}: ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -426,7 +431,7 @@ fn_startserver(){
 fn_rootcheck
 fn_syscheck
 echo -en "[ .... ] Starting ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog}
 sleep 0.5
 fn_runcheck
 fn_logmanager
@@ -434,14 +439,14 @@ mv ${scriptlog} ${scriptlogdate}
 mv ${consolelog} ${consolelogdate}
 cd ${filesdir}
 tmux new-session -d -s ${servicename} "./srcds_run ${parms} |tee -a ${consolelog}"
-tmuxwc=`tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l`
 sleep 1
+tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l)
 if [ ${tmuxwc} -eq 0 ];then
 	echo -en "\r[\e[0;31m FAIL \e[0;39m] Starting ${servicename}: Failed to start ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog}
 else
 	echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -515,7 +520,7 @@ while true; do
 	[Yy]* ) break;;
 	[Nn]* ) echo Exiting; return 1 ;;
 	* ) echo "Please answer yes or no.";;
-    esac
+	esac
 done
 fn_header
 fn_steamdl
@@ -550,6 +555,9 @@ echo "================================="
 	sleep 1
 	echo ""
 	echo "Creating server.cfg"
+	sleep 1
+	echo "Saving as:"
+	echo "${servercfg}"
 	touch ${servercfg}
 	{
 		echo -e "// server name"
@@ -574,7 +582,7 @@ echo "================================="
 	mkdir -v ${rootdir}/log
 	mkdir -v ${scriptlogdir}
 	mkdir -v ${consolelogdir}
-	touch ${consolelog}	
+	touch ${consolelog}
 	if [ ! -h ${rootdir}/log/server ]; then
 		ln -sv ${gamelogdir} ${rootdir}/log/server
 	else

+ 59 - 57
KillingFloor/kfserver

@@ -3,7 +3,7 @@
 # Server Management Script
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
-# Version: 011013
+# Version: 101113
 
 #### Variables ####
 
@@ -20,22 +20,23 @@ steampass="password"
 appid="215360"
 
 # Directorys
-rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )"
 selfname="$0"
 filesdir="${rootdir}/serverfiles"
 systemdir="${filesdir}/System"
 backupdir="${rootdir}/backups"
 compressedmapsdir="${rootdir}/Maps-Compressed"
 
-# Server names
+# Server Details
 servicename="kf-server"
 gamename="Killing Floor"
 engine="unreal2"
 ini="${servicename}.ini"
-servername=`grep -s ServerName= ${systemdir}/${ini} | sed 's/ServerName=//g'`
+servername=$(grep -s ServerName= ${systemdir}/${ini} | sed 's/ServerName=//g')
 
 # Logging
 logdays="7"
+
 scriptlogdir="${rootdir}/log/script"
 consolelogdir="${rootdir}/log/console"
 
@@ -46,7 +47,7 @@ emaillog="${scriptlogdir}/${servicename}-email.log"
 scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log"
 consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log"
 
-# Start vars
+# Start Variables
 defaultmap="KF-BioticsLab.rom"
 parms="server ${defaultmap}?game=KFmod.KFGameType?VACSecured=true -nohomedir ini=${ini} log=${logfile}"
 
@@ -74,12 +75,13 @@ tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicen
 if [ ${tmuxwc} -eq 1 ];then
 	fn_serverquery
 	echo -en "\r[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} is already running"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog}
 	sleep 0.5
 	echo -en "\n"
 	exit
 fi
 }
+
 fn_compressmaps(){
 fn_rootcheck
 clear
@@ -101,10 +103,17 @@ while true; do
 	* ) echo "Please answer yes or no.";;
 	esac
 done
-mkdir ${compressedmapsdir}
+mkdir ${compressedmapsdir} > /dev/null 2>&1
 rm -rfv ${filesdir}/Maps/*.uz2
 cd ${systemdir}
-./ucc-bin compress ../Maps/* --nohomedir
+for map in `ls ${filesdir}/Maps`; do
+	if [ `getconf LONG_BIT` = "64" ]
+	then
+		./ucc-bin-linux-amd64 compress ../Maps/${map} --nohomedir
+	else
+		./ucc-bin compress ../Maps/${map} --nohomedir
+	fi
+done
 mv -fv ${filesdir}/Maps/*.uz2 ${compressedmapsdir}
 }
 
@@ -143,21 +152,24 @@ cd ${rootdir}
 }
 
 fn_logmanager(){
+if [ ! -e ${consolelog} ];then
+	touch ${consolelog}
+fi
 # log manager will active if finds logs older than ${logdays}
 if [ `find ${scriptlogdir}/* -mtime +${logdays} |wc -l` -ne "0" ];then
 	echo -e "[\e[0;32m  OK  \e[0;39m] Starting log cleaner"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog}
 	echo -e "[\e[0;36m INFO \e[0;39m] Removing logs older than ${logdays} days"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog}
 	find ${scriptlogdir}/* -mtime +${logdays} |tee >> ${scriptlog}
 	find ${consolelogdir}/* -mtime +${logdays} |tee >> ${scriptlog}
-	scriptcount=`find ${scriptlogdir}/* -mtime +${logdays}|wc -l`
-	consolecount=`find ${consolelogdir}/* -mtime +${logdays}|wc -l`
+	scriptcount=$(find ${scriptlogdir}/* -mtime +${logdays}|wc -l)
+	consolecount=$(find ${consolelogdir}/* -mtime +${logdays}|wc -l)
 	count=$((${scriptcount} + ${consolecount}))
 	find ${scriptlogdir}/* -mtime +${logdays} -exec rm {} \;
 	find ${consolelogdir}/* -mtime +${logdays} -exec rm {} \;
 	echo -e "[\e[0;36m INFO \e[0;39m] Log cleaner removed ${count} log files"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog}
 fi
 }
 
@@ -182,14 +194,13 @@ esac
 done
 fn_stopserver
 echo -en "[ .... ] Starting ${servicename}: ${servername} debug mode"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog}
 sleep 0.5
 echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog}
 sleep 0.5
 echo -en "\n"
 cd ${systemdir}
-
 ./ucc-bin ${parms}
 }
 
@@ -217,7 +228,7 @@ sleep 0.5
 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicename}|wc -l)
 if [ ${tmuxwc} -eq 1 ];then
 	echo -e "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename} console"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog}
 	sleep 1
 	tmux attach-session -t ${servicename}
 else
@@ -267,17 +278,17 @@ if [ ${tmuxwc} -eq 1 ];then
 	done
 fi
 echo -en "[ .... ] Starting ${servicename}: ${servername} backup"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog}
 sleep 0.5
 echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername} backup"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog}
 sleep 1
 echo -en "\n"
 cd ${rootdir}
 mkdir ${backupdir} > /dev/null 2>&1
-tar -cvzf  ${backupdir}/${backupname}.tar.gz  --exclude '${backupdir}' ${rootdir}
+tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir}
 echo -en "\r${servicename} backup complete"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog}
 }
 
 fn_details(){
@@ -298,8 +309,6 @@ else
 	webadminuser=$(grep AdminName= ${systemdir}/${ini}|sed 's/\AdminName=//g')
 fi
 webadminpass=$(grep AdminPassword= ${systemdir}/${ini}|sed 's/\AdminPassword=//g')
-
-
 echo "Ports the server is currently using"
 echo ""
 echo "DIRECTION	DESCRIPTION		PORT		INI VARIABLE"
@@ -322,19 +331,13 @@ if [ "${appid}" ];then
 	else
 		echo "OUTBOUND	Steam Port		20660 UDP	n/a"
 	fi
-
 fi
 echo "INBOUND		WebAdmin 		${webadminport} TCP	ListenPort=${webadminport}"
-
 echo ""
-
-
-
 echo "${servername} WebAdmin"
 echo "======================="
 echo "WebAdmin URL: http://localhost:${webadminport}"
 echo "WebAdmin Username: ${webadminuser}"
-
 echo "WebAdmin Password: ${webadminpass}"
 echo ""
 echo "Config file"
@@ -350,7 +353,7 @@ if [ -f /etc/lsb-release ]; then
 elif [ -f /etc/debian_version ]; then
 	os="Debian $(cat /etc/debian_version)"
 elif [ -f /etc/redhat-release ]; then
-	os=`cat /etc/redhat-release`
+	os=$(cat /etc/redhat-release)
 else
 	os="$(uname -s) $(uname -r)"
 fi
@@ -407,7 +410,7 @@ echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${
 fn_emailtest(){
 fn_rootcheck
 fn_syscheck
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog}
 if [ "${emailnotification}" = "on" ];then
 	subject="${servicename} Email Test Notification - Testing ${servername}"
 	failurereason="Testing ${servicename} email notification"
@@ -415,7 +418,7 @@ if [ "${emailnotification}" = "on" ];then
 	fn_emailnotification
 else
 	echo -e "[\e[0;31m FAIL \e[0;39m] Email notification not enabled"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -426,22 +429,22 @@ fn_serverquery(){
 # detects if the server locks up
 if [ -f serverquery.py ];then
 	echo -e "[\e[0;36m INFO \e[0;39m] serverquery.py detected"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog}
 	echo -e "[\e[0;32m  OK  \e[0;39m] Querying ${servicename}: ${servername}: QUERYING"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog}
-	serverquery=`./serverquery.py 127.0.0.1 ${port} 2>&1`
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog}
+	serverquery=$(./serverquery.py 127.0.0.1 ${port} 2>&1)
 	sleep 1
 	if [ "${serverquery}" = "ERROR 1" ]||[ "${serverquery}" = "ERROR 2" ]||[ "${serverquery}" = "ERROR 3" ];then
 		echo -e "[\e[0;31m FAIL \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
 		sleep 1
 		echo -e "[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} has locked up!"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog}
 		sleep 1
 		fn_restartserver
 	else
 		echo -e "[\e[0;32m  OK  \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
 		sleep 1
 	fi
 fi
@@ -452,13 +455,13 @@ fn_rootcheck
 fn_syscheck
 fn_logmanager
 echo -en "[ .... ] Monitor is checking ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog}
 sleep 0.5
-updatecheck=`ps -ef|grep "${selfname} update"|grep -v grep|wc -l`
+updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l)
 if [ "${updatecheck}" = "0" ];then
 	fn_runcheck
 	echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
 	if [ "${emailnotification}" = "on" ];then
 		subject="${servicename} Monitor - Starting ${servername}"
 		failurereason="${servicename} process was not running"
@@ -468,14 +471,14 @@ if [ "${updatecheck}" = "0" ];then
 		fn_emailnotification
 	fi
 	sleep 0.5
-	echo -en "\n"	
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog}
+	echo -en "\n"
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog}
 	fn_startserver
 else
 	echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: Monitor detected ${servername} is currently checking for updates!"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog}
 	echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} will start when updating is complete"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog}
 fi
 }
 
@@ -483,13 +486,13 @@ fn_updateserver(){
 fn_rootcheck
 fn_syscheck
 echo -e "[\e[0;32m  OK  \e[0;39m] Updating ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog}
 cd ${rootdir}
 cd steamcmd
 ./steamcmd.sh +login ${steamuser} ${steampass} +force_install_dir ${filesdir} +app_update ${appid} validate +quit |tee -a ${logfile}
 if [ $(grep Denied ${logfile}|wc -l) -ge 1 ];then
 	echo -e "[\e[0;31m FAIL \e[0;39m] ${servicename}: STEAMAUTH error detected!: Server update failed"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: STEAMAUTH error detected!: Server update failed" >> ${logfile}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: STEAMAUTH error detected!: Server update failed" >> ${logfile}
 	if [ "${emailnotification}" = "on" ];then
 		mail -s "${servername}: Steam Auth Failure" ${email}< ${logfile}
 	fi
@@ -497,7 +500,7 @@ fi
 }
 
 fn_restartserver(){
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog}
 fn_stopserver
 fn_startserver
 }
@@ -507,15 +510,15 @@ fn_rootcheck
 fn_syscheck
 pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l)
 echo -en "[ .... ] Stopping ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog}
 sleep 0.5
 if [ "${pid}" == "0" ];then
 	echo -en "\r[\e[0;31m FAIL \e[0;39m] Stopping ${servicename}: ${servername} is already stopped"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog}
 else
 	tmux kill-session -t ${servicename}
 	echo -en "\r[\e[0;32m  OK  \e[0;39m] Stopping ${servicename}: ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -525,23 +528,22 @@ fn_startserver(){
 fn_rootcheck
 fn_syscheck
 echo -en "[ .... ] Starting ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog}
 sleep 0.5
 fn_runcheck
 fn_logmanager
 mv ${scriptlog} ${scriptlogdate}
 mv ${consolelog} ${consolelogdate}
 cd ${systemdir}
-
 tmux new-session -d -s ${servicename} "./ucc-bin ${parms} |tee -a ${consolelog}"
-tmuxwc=`tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l`
 sleep 1
+tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l)
 if [ ${tmuxwc} -eq 0 ];then
 	echo -en "\r[\e[0;31m FAIL \e[0;39m] Starting ${servicename}: Failed to start ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog}
 else
 	echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -724,4 +726,4 @@ case "$1" in
 	echo "Usage: $0 {start|stop|restart|update|monitor|email-test|details|backup|console|debug|install|map-compressor|steam-auth}"
 	exit 1;;
 esac
-exit
+exit

+ 59 - 51
Left4Dead2/l4d2server

@@ -3,7 +3,7 @@
 # Server Management Script
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
-# Version: 011013
+# Version: 101113
 
 #### Variables ####
 
@@ -12,7 +12,7 @@
 emailnotification="off"
 email="email@example.com"
 
-# Start vars
+# Start Variables
 defaultmap="c5m1_waterfront"
 port="27015"
 sourcetvport="27020"
@@ -24,19 +24,21 @@ parms="-game left4dead2 +map ${defaultmap} -strictportbind -port ${port} +tv_por
 # Steam
 appid="222860"
 
+# Server Details
+servicename="l4d2-server"
+gamename="Left 4 Dead 2"
+engine="source"
+
 # Directorys
-rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )"
 selfname="$0"
 filesdir="${rootdir}/serverfiles"
-servercfg="${filesdir}/left4dead2/cfg/server.cfg"
+servercfg="${filesdir}/left4dead2/cfg/${servicename}.cfg"
 backupdir="${rootdir}/backups"
 
 # Server Details
-servicename="l4d2-server"
-gamename="Left 4 Dead 2"
-engine="source"
-servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'`
-rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'`
+servername$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g')
+rcon$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g')
 
 # Logging
 logdays="7"
@@ -75,7 +77,7 @@ tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicen
 if [ ${tmuxwc} -eq 1 ];then
 	fn_serverquery
 	echo -en "\r[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} is already running"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog}
 	sleep 0.5
 	echo -en "\n"
 	exit
@@ -83,21 +85,24 @@ fi
 }
 
 fn_logmanager(){
+if [ ! -e ${consolelog} ];then
+	touch ${consolelog}
+fi
 # log manager will active if finds logs older than ${logdays}
 if [ `find ${scriptlogdir}/* -mtime +${logdays} |wc -l` -ne "0" ];then
 	echo -e "[\e[0;32m  OK  \e[0;39m] Starting log cleaner"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog}
 	echo -e "[\e[0;36m INFO \e[0;39m] Removing logs older than ${logdays} days"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog}
 	find ${scriptlogdir}/* -mtime +${logdays} |tee >> ${scriptlog}
 	find ${consolelogdir}/* -mtime +${logdays} |tee >> ${scriptlog}
-	scriptcount=`find ${scriptlogdir}/* -mtime +${logdays}|wc -l`
-	consolecount=`find ${consolelogdir}/* -mtime +${logdays}|wc -l`
+	scriptcount=$(find ${scriptlogdir}/* -mtime +${logdays}|wc -l)
+	consolecount=$(find ${consolelogdir}/* -mtime +${logdays}|wc -l)
 	count=$((${scriptcount} + ${consolecount}))
 	find ${scriptlogdir}/* -mtime +${logdays} -exec rm {} \;
 	find ${consolelogdir}/* -mtime +${logdays} -exec rm {} \;
 	echo -e "[\e[0;36m INFO \e[0;39m] Log cleaner removed ${count} log files"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog}
 fi
 }
 
@@ -122,10 +127,10 @@ esac
 done
 fn_stopserver
 echo -en "[ .... ] Starting ${servicename}: ${servername} debug mode"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog}
 sleep 0.5
 echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog}
 sleep 0.5
 echo -en "\n"
 cd ${filesdir}
@@ -156,7 +161,7 @@ sleep 0.5
 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicename}|wc -l)
 if [ ${tmuxwc} -eq 1 ];then
 	echo -e "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename} console"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog}
 	sleep 1
 	tmux attach-session -t ${servicename}
 else
@@ -206,17 +211,17 @@ if [ ${tmuxwc} -eq 1 ];then
 	done
 fi
 echo -en "[ .... ] Starting ${servicename}: ${servername} backup"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog}
 sleep 0.5
 echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername} backup"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog}
 sleep 1
 echo -en "\n"
 cd ${rootdir}
 mkdir ${backupdir} > /dev/null 2>&1
-tar -cvzf  ${backupdir}/${backupname}.tar.gz  --exclude '${backupdir}' ${rootdir}
+tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir}
 echo -en "\r${servicename} backup complete"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog}
 }
 
 fn_details(){
@@ -226,8 +231,8 @@ echo "============================"
 echo ""
 echo "${servername} Ports"
 echo "======================="
-servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'`
-rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'`
+servername=$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g')
+rcon=$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g')
 echo "Ports the server is currently using"
 echo ""
 echo "DIRECTION	DESCRIPTION		PORT"
@@ -258,7 +263,7 @@ if [ -f /etc/lsb-release ]; then
 elif [ -f /etc/debian_version ]; then
 	os="Debian $(cat /etc/debian_version)"
 elif [ -f /etc/redhat-release ]; then
-	os=`cat /etc/redhat-release`
+	os=$(cat /etc/redhat-release)
 else
 	os="$(uname -s) $(uname -r)"
 fi
@@ -315,7 +320,7 @@ echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${
 fn_emailtest(){
 fn_rootcheck
 fn_syscheck
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog}
 if [ "${emailnotification}" = "on" ];then
 	subject="${servicename} Email Test Notification - Testing ${servername}"
 	failurereason="Testing ${servicename} email notification"
@@ -323,7 +328,7 @@ if [ "${emailnotification}" = "on" ];then
 	fn_emailnotification
 else
 	echo -e "[\e[0;31m FAIL \e[0;39m] Email notification not enabled"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -334,22 +339,22 @@ fn_serverquery(){
 # detects if the server locks up
 if [ -f serverquery.py ];then
 	echo -e "[\e[0;36m INFO \e[0;39m] serverquery.py detected"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog}
 	echo -e "[\e[0;32m  OK  \e[0;39m] Querying ${servicename}: ${servername}: QUERYING"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog}
-	serverquery=`./serverquery.py 127.0.0.1 ${port} 2>&1`
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog}
+	serverquery=$(./serverquery.py 127.0.0.1 ${port} 2>&1)
 	sleep 1
 	if [ "${serverquery}" = "ERROR 1" ]||[ "${serverquery}" = "ERROR 2" ]||[ "${serverquery}" = "ERROR 3" ];then
 		echo -e "[\e[0;31m FAIL \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
 		sleep 1
 		echo -e "[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} has locked up!"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog}
 		sleep 1
 		fn_restartserver
 	else
 		echo -e "[\e[0;32m  OK  \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
 		sleep 1
 	fi
 fi
@@ -360,13 +365,13 @@ fn_rootcheck
 fn_syscheck
 fn_logmanager
 echo -en "[ .... ] Monitor is checking ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog}
 sleep 0.5
-updatecheck=`ps -ef|grep "${selfname} update"|grep -v grep|wc -l`
+updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l)
 if [ "${updatecheck}" = "0" ];then
 	fn_runcheck
 	echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
 	if [ "${emailnotification}" = "on" ];then
 		subject="${servicename} Monitor - Starting ${servername}"
 		failurereason="${servicename} process was not running"
@@ -376,14 +381,14 @@ if [ "${updatecheck}" = "0" ];then
 		fn_emailnotification
 	fi
 	sleep 0.5
-	echo -en "\n"	
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog}
+	echo -en "\n"
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog}
 	fn_startserver
 else
 	echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: Monitor detected ${servername} is currently checking for updates!"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog}
 	echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} will start when updating is complete"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog}
 fi
 }
 
@@ -391,14 +396,14 @@ fn_updateserver(){
 fn_rootcheck
 fn_syscheck
 echo -e "[\e[0;32m  OK  \e[0;39m] Updating ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog}
 cd ${rootdir}
 cd steamcmd
 ./steamcmd.sh +login anonymous +force_install_dir ${filesdir} +app_update ${appid} validate +quit |tee -a ${scriptlog}
 }
 
 fn_restartserver(){
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog}
 fn_stopserver
 fn_startserver
 }
@@ -408,15 +413,15 @@ fn_rootcheck
 fn_syscheck
 pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l)
 echo -en "[ .... ] Stopping ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog}
 sleep 0.5
 if [ "${pid}" == "0" ];then
 	echo -en "\r[\e[0;31m FAIL \e[0;39m] Stopping ${servicename}: ${servername} is already stopped"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog}
 else
 	tmux kill-session -t ${servicename}
 	echo -en "\r[\e[0;32m  OK  \e[0;39m] Stopping ${servicename}: ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -426,7 +431,7 @@ fn_startserver(){
 fn_rootcheck
 fn_syscheck
 echo -en "[ .... ] Starting ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog}
 sleep 0.5
 fn_runcheck
 fn_logmanager
@@ -434,14 +439,14 @@ mv ${scriptlog} ${scriptlogdate}
 mv ${consolelog} ${consolelogdate}
 cd ${filesdir}
 tmux new-session -d -s ${servicename} "./srcds_run ${parms} |tee -a ${consolelog}"
-tmuxwc=`tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l`
 sleep 1
+tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l)
 if [ ${tmuxwc} -eq 0 ];then
 	echo -en "\r[\e[0;31m FAIL \e[0;39m] Starting ${servicename}: Failed to start ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog}
 else
 	echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -515,7 +520,7 @@ while true; do
 	[Yy]* ) break;;
 	[Nn]* ) echo Exiting; return 1 ;;
 	* ) echo "Please answer yes or no.";;
-    esac
+	esac
 done
 fn_header
 fn_steamdl
@@ -550,6 +555,9 @@ echo "================================="
 	sleep 1
 	echo ""
 	echo "Creating server.cfg"
+	sleep 1
+	echo "Saving as:"
+	echo "${servercfg}"
 	touch ${servercfg}
 	{
 		echo -e "// server name"
@@ -626,4 +634,4 @@ case "$1" in
 	echo "Usage: $0 {start|stop|restart|update|monitor|email-test|details|backup|console|debug|install}"
 	exit 1;;
 esac
-exit
+exit

+ 46 - 43
NaturalSelection2/ns2server

@@ -3,7 +3,7 @@
 # Server Management Script
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
-# Version: 011013
+# Version: 101113
 
 #### Variables ####
 
@@ -16,7 +16,7 @@ email="email@example.com"
 steamuser="username"
 steampass="password"
 
-# Start vars
+# Start Variables
 servername="NS2 Server"
 defaultmap="ns2_summit"
 port="27015"
@@ -39,7 +39,7 @@ gamename="Natural Selection 2"
 engine="spark"
 
 # Directorys
-rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )"
 selfname="$0"
 filesdir="${rootdir}/serverfiles"
 backupdir="${rootdir}/backups"
@@ -81,7 +81,7 @@ tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicen
 if [ ${tmuxwc} -eq 1 ];then
 	fn_serverquery
 	echo -en "\r[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} is already running"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog}
 	sleep 0.5
 	echo -en "\n"
 	exit
@@ -89,21 +89,24 @@ fi
 }
 
 fn_logmanager(){
+if [ ! -e ${consolelog} ];then
+	touch ${consolelog}
+fi
 # log manager will active if finds logs older than ${logdays}
 if [ `find ${scriptlogdir}/* -mtime +${logdays} |wc -l` -ne "0" ];then
 	echo -e "[\e[0;32m  OK  \e[0;39m] Starting log cleaner"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog}
 	echo -e "[\e[0;36m INFO \e[0;39m] Removing logs older than ${logdays} days"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog}
 	find ${scriptlogdir}/* -mtime +${logdays} |tee >> ${scriptlog}
 	find ${consolelogdir}/* -mtime +${logdays} |tee >> ${scriptlog}
-	scriptcount=`find ${scriptlogdir}/* -mtime +${logdays}|wc -l`
-	consolecount=`find ${consolelogdir}/* -mtime +${logdays}|wc -l`
+	scriptcount=$(find ${scriptlogdir}/* -mtime +${logdays}|wc -l)
+	consolecount=$(find ${consolelogdir}/* -mtime +${logdays}|wc -l)
 	count=$((${scriptcount} + ${consolecount}))
 	find ${scriptlogdir}/* -mtime +${logdays} -exec rm {} \;
 	find ${consolelogdir}/* -mtime +${logdays} -exec rm {} \;
 	echo -e "[\e[0;36m INFO \e[0;39m] Log cleaner removed ${count} log files"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog}
 fi
 }
 
@@ -128,10 +131,10 @@ esac
 done
 fn_stopserver
 echo -en "[ .... ] Starting ${servicename}: ${servername} debug mode"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog}
 sleep 0.5
 echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog}
 sleep 0.5
 echo -en "\n"
 cd ${filesdir}
@@ -162,7 +165,7 @@ sleep 0.5
 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicename}|wc -l)
 if [ ${tmuxwc} -eq 1 ];then
 	echo -e "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename} console"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog}
 	sleep 1
 	tmux attach-session -t ${servicename}
 else
@@ -212,17 +215,17 @@ if [ ${tmuxwc} -eq 1 ];then
 	done
 fi
 echo -en "[ .... ] Starting ${servicename}: ${servername} backup"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog}
 sleep 0.5
 echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername} backup"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog}
 sleep 1
 echo -en "\n"
 cd ${rootdir}
 mkdir ${backupdir} > /dev/null 2>&1
-tar -cvzf  ${backupdir}/${backupname}.tar.gz  --exclude '${backupdir}' ${rootdir}
+tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir}
 echo -en "\r${servicename} backup complete"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog}
 }
 
 fn_ns2details(){
@@ -257,7 +260,7 @@ if [ -f /etc/lsb-release ]; then
 elif [ -f /etc/debian_version ]; then
 	os="Debian $(cat /etc/debian_version)"
 elif [ -f /etc/redhat-release ]; then
-	os=`cat /etc/redhat-release`
+	os=$(cat /etc/redhat-release)
 else
 	os="$(uname -s) $(uname -r)"
 fi
@@ -314,7 +317,7 @@ echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${
 fn_emailtest(){
 fn_rootcheck
 fn_syscheck
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog}
 if [ "${emailnotification}" = "on" ];then
 	subject="${servicename} Email Test Notification - Testing ${servername}"
 	failurereason="Testing ${servicename} email notification"
@@ -322,7 +325,7 @@ if [ "${emailnotification}" = "on" ];then
 	fn_emailnotification
 else
 	echo -e "[\e[0;31m FAIL \e[0;39m] Email notification not enabled"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -333,22 +336,22 @@ fn_serverquery(){
 # detects if the server locks up
 if [ -f serverquery.py ];then
 	echo -e "[\e[0;36m INFO \e[0;39m] serverquery.py detected"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog}
 	echo -e "[\e[0;32m  OK  \e[0;39m] Querying ${servicename}: ${servername}: QUERYING"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog}
-	serverquery=`./serverquery.py 127.0.0.1 ${port} 2>&1`
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog}
+	serverquery=$(./serverquery.py 127.0.0.1 ${port} 2>&1)
 	sleep 1
 	if [ "${serverquery}" = "ERROR 1" ]||[ "${serverquery}" = "ERROR 2" ]||[ "${serverquery}" = "ERROR 3" ];then
 		echo -e "[\e[0;31m FAIL \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
 		sleep 1
 		echo -e "[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} has locked up!"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog}
 		sleep 1
 		fn_restartserver
 	else
 		echo -e "[\e[0;32m  OK  \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
 		sleep 1
 	fi
 fi
@@ -359,13 +362,13 @@ fn_rootcheck
 fn_syscheck
 fn_logmanager
 echo -en "[ .... ] Monitor is checking ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog}
 sleep 0.5
-updatecheck=`ps -ef|grep "${selfname} update"|grep -v grep|wc -l`
+updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l)
 if [ "${updatecheck}" = "0" ];then
 	fn_runcheck
 	echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
 	if [ "${emailnotification}" = "on" ];then
 		subject="${servicename} Monitor - Starting ${servername}"
 		failurereason="${servicename} process was not running"
@@ -375,14 +378,14 @@ if [ "${updatecheck}" = "0" ];then
 		fn_emailnotification
 	fi
 	sleep 0.5
-	echo -en "\n"	
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog}
+	echo -en "\n"
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog}
 	fn_startserver
 else
 	echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: Monitor detected ${servername} is currently checking for updates!"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog}
 	echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} will start when updating is complete"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog}
 fi
 }
 
@@ -390,14 +393,14 @@ fn_updateserver(){
 fn_rootcheck
 fn_syscheck
 echo -e "[\e[0;32m  OK  \e[0;39m] Updating ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog}
 cd ${rootdir}
 cd steamcmd
 ./steamcmd.sh +login ${steamuser} ${steampass} +force_install_dir ${filesdir} +app_update ${appid} validate +quit |tee -a ${scriptlog}
 }
 
 fn_restartserver(){
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog}
 fn_stopserver
 fn_startserver
 }
@@ -407,15 +410,15 @@ fn_rootcheck
 fn_syscheck
 pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l)
 echo -en "[ .... ] Stopping ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog}
 sleep 0.5
 if [ "${pid}" == "0" ];then
 	echo -en "\r[\e[0;31m FAIL \e[0;39m] Stopping ${servicename}: ${servername} is already stopped"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog}
 else
 	tmux kill-session -t ${servicename}
 	echo -en "\r[\e[0;32m  OK  \e[0;39m] Stopping ${servicename}: ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -425,7 +428,7 @@ fn_startserver(){
 fn_rootcheck
 fn_syscheck
 echo -en "[ .... ] Starting ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog}
 sleep 0.5
 fn_runcheck
 fn_logmanager
@@ -433,14 +436,14 @@ mv ${scriptlog} ${scriptlogdate}
 mv ${consolelog} ${consolelogdate}
 cd ${filesdir}
 tmux new-session -d -s ${servicename} "./server_linux32 ${parms} |tee -a ${consolelog}"
-tmuxwc=`tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l`
 sleep 1
+tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l)
 if [ ${tmuxwc} -eq 0 ];then
 	echo -en "\r[\e[0;31m FAIL \e[0;39m] Starting ${servicename}: Failed to start ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog}
 else
 	echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -514,7 +517,7 @@ while true; do
 	[Yy]* ) break;;
 	[Nn]* ) echo Exiting; return 1 ;;
 	* ) echo "Please answer yes or no.";;
-    esac
+	esac
 done
 fn_header
 fn_steamdl
@@ -600,4 +603,4 @@ case "$1" in
 	echo "Usage: $0 {start|stop|restart|update|monitor|email-test|details|backup|console|debug|install}"
 	exit 1;;
 esac
-exit
+exit

+ 63 - 92
RedOrchestra/roserver

@@ -20,19 +20,19 @@ steampass="password"
 appid="223250"
 
 # Directorys
-rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )"
 selfname="$0"
 filesdir="${rootdir}/serverfiles"
 systemdir="${filesdir}/system"
 backupdir="${rootdir}/backups"
 compressedmapsdir="${rootdir}/Maps-Compressed"
 
-# Server names
+# Server Details
 servicename="ro-server"
 gamename="Red Orchestra: Ostfront 41-45"
 engine="unreal2"
 ini="${servicename}.ini"
-servername=`grep -s ServerName= ${systemdir}/${ini} | sed 's/ServerName=//g'`
+servername=$(grep -s ServerName= ${systemdir}/${ini} | sed 's/ServerName=//g')
 
 # Logging
 logdays="7"
@@ -46,7 +46,7 @@ emaillog="${scriptlogdir}/${servicename}-email.log"
 scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log"
 consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log"
 
-# Start vars
+# Start Variables
 defaultmap="RO-Arad.rom"
 parms="server ${defaultmap}?game=ROGame.ROTeamGame?VACSecured=true -nohomedir ini=${ini} log=${logfile}"
 
@@ -74,12 +74,13 @@ tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicen
 if [ ${tmuxwc} -eq 1 ];then
 	fn_serverquery
 	echo -en "\r[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} is already running"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog}
 	sleep 0.5
 	echo -en "\n"
 	exit
 fi
 }
+
 fn_compressmaps(){
 fn_rootcheck
 clear
@@ -101,10 +102,17 @@ while true; do
 	* ) echo "Please answer yes or no.";;
 	esac
 done
-mkdir ${compressedmapsdir}
+mkdir ${compressedmapsdir} > /dev/null 2>&1
 rm -rfv ${filesdir}/Maps/*.uz2
 cd ${systemdir}
-./ucc-bin compress ../Maps/* --nohomedir
+for map in `ls ${filesdir}/Maps`; do
+	if [ `getconf LONG_BIT` = "64" ]
+	then
+		./ucc-bin-linux-amd64 compress ../Maps/${map} --nohomedir
+	else
+		./ucc-bin compress ../Maps/${map} --nohomedir
+	fi
+done
 mv -fv ${filesdir}/Maps/*.uz2 ${compressedmapsdir}
 }
 
@@ -143,21 +151,24 @@ cd ${rootdir}
 }
 
 fn_logmanager(){
+if [ ! -e ${consolelog} ];then
+	touch ${consolelog}
+fi
 # log manager will active if finds logs older than ${logdays}
 if [ `find ${scriptlogdir}/* -mtime +${logdays} |wc -l` -ne "0" ];then
 	echo -e "[\e[0;32m  OK  \e[0;39m] Starting log cleaner"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog}
 	echo -e "[\e[0;36m INFO \e[0;39m] Removing logs older than ${logdays} days"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog}
 	find ${scriptlogdir}/* -mtime +${logdays} |tee >> ${scriptlog}
 	find ${consolelogdir}/* -mtime +${logdays} |tee >> ${scriptlog}
-	scriptcount=`find ${scriptlogdir}/* -mtime +${logdays}|wc -l`
-	consolecount=`find ${consolelogdir}/* -mtime +${logdays}|wc -l`
+	scriptcount=$(find ${scriptlogdir}/* -mtime +${logdays}|wc -l)
+	consolecount=$(find ${consolelogdir}/* -mtime +${logdays}|wc -l)
 	count=$((${scriptcount} + ${consolecount}))
 	find ${scriptlogdir}/* -mtime +${logdays} -exec rm {} \;
 	find ${consolelogdir}/* -mtime +${logdays} -exec rm {} \;
 	echo -e "[\e[0;36m INFO \e[0;39m] Log cleaner removed ${count} log files"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog}
 fi
 }
 
@@ -182,14 +193,13 @@ esac
 done
 fn_stopserver
 echo -en "[ .... ] Starting ${servicename}: ${servername} debug mode"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog}
 sleep 0.5
 echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog}
 sleep 0.5
 echo -en "\n"
 cd ${systemdir}
-
 ./ucc-bin ${parms}
 }
 
@@ -217,7 +227,7 @@ sleep 0.5
 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicename}|wc -l)
 if [ ${tmuxwc} -eq 1 ];then
 	echo -e "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename} console"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog}
 	sleep 1
 	tmux attach-session -t ${servicename}
 else
@@ -267,17 +277,17 @@ if [ ${tmuxwc} -eq 1 ];then
 	done
 fi
 echo -en "[ .... ] Starting ${servicename}: ${servername} backup"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog}
 sleep 0.5
 echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername} backup"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog}
 sleep 1
 echo -en "\n"
 cd ${rootdir}
 mkdir ${backupdir} > /dev/null 2>&1
-tar -cvzf  ${backupdir}/${backupname}.tar.gz  --exclude '${backupdir}' ${rootdir}
+tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir}
 echo -en "\r${servicename} backup complete"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog}
 }
 
 fn_details(){
@@ -298,8 +308,6 @@ else
 	webadminuser=$(grep AdminName= ${systemdir}/${ini}|sed 's/\AdminName=//g')
 fi
 webadminpass=$(grep AdminPassword= ${systemdir}/${ini}|sed 's/\AdminPassword=//g')
-
-
 echo "Ports the server is currently using"
 echo ""
 echo "DIRECTION	DESCRIPTION		PORT		INI VARIABLE"
@@ -322,19 +330,13 @@ if [ "${appid}" ];then
 	else
 		echo "OUTBOUND	Steam Port		20660 UDP	n/a"
 	fi
-
 fi
 echo "INBOUND		WebAdmin 		${webadminport} TCP	ListenPort=${webadminport}"
-
 echo ""
-
-
-
 echo "${servername} WebAdmin"
 echo "======================="
 echo "WebAdmin URL: http://localhost:${webadminport}"
 echo "WebAdmin Username: ${webadminuser}"
-
 echo "WebAdmin Password: ${webadminpass}"
 echo ""
 echo "Config file"
@@ -350,7 +352,7 @@ if [ -f /etc/lsb-release ]; then
 elif [ -f /etc/debian_version ]; then
 	os="Debian $(cat /etc/debian_version)"
 elif [ -f /etc/redhat-release ]; then
-	os=`cat /etc/redhat-release`
+	os=$(cat /etc/redhat-release)
 else
 	os="$(uname -s) $(uname -r)"
 fi
@@ -391,21 +393,23 @@ echo -e "========================================\nLogs\n=======================
 echo -e "Script log\n===================\n"
 }|tee ${scriptlogdir}/${servicename}-email.log > /dev/null 2>&1
 tail -25 ${scriptlog} >> ${emaillog}
-echo -e "\n\nConsole log\n====================\n" >> ${emaillog}
-tail -25 ${consolelog} >> ${emaillog}
+if [ ! -z ${consolelog} ];then
+	echo -e "\n\nConsole log\n====================\n" >> ${emaillog}
+	tail -25 ${consolelog} >> ${emaillog}
+fi
 if [ ! -z ${gamelogdir} ];then
 	echo -e "\n\nServer log\n====================\n" >> ${emaillog}
-	tail ${gamelogdir}/*|grep -v "==>"|sed '/^$/d' >> ${emaillog}
+	tail ${gamelogdir}/*|grep -v "==>"|sed '/^$/d'|tail -25 >> ${emaillog}
 fi
 mail -s "${subject}" ${email} < ${emaillog}
 echo -en "[\e[0;36m INFO \e[0;39m] Sent email notification to ${email}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${email}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${email}" >> ${scriptlog}
 }
 
 fn_emailtest(){
 fn_rootcheck
 fn_syscheck
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog}
 if [ "${emailnotification}" = "on" ];then
 	subject="${servicename} Email Test Notification - Testing ${servername}"
 	failurereason="Testing ${servicename} email notification"
@@ -413,7 +417,7 @@ if [ "${emailnotification}" = "on" ];then
 	fn_emailnotification
 else
 	echo -e "[\e[0;31m FAIL \e[0;39m] Email notification not enabled"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -424,22 +428,22 @@ fn_serverquery(){
 # detects if the server locks up
 if [ -f serverquery.py ];then
 	echo -e "[\e[0;36m INFO \e[0;39m] serverquery.py detected"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog}
 	echo -e "[\e[0;32m  OK  \e[0;39m] Querying ${servicename}: ${servername}: QUERYING"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog}
-	serverquery=`./serverquery.py 127.0.0.1 ${port} 2>&1`
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog}
+	serverquery=$(./serverquery.py 127.0.0.1 ${port} 2>&1)
 	sleep 1
 	if [ "${serverquery}" = "ERROR 1" ]||[ "${serverquery}" = "ERROR 2" ]||[ "${serverquery}" = "ERROR 3" ];then
 		echo -e "[\e[0;31m FAIL \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
 		sleep 1
 		echo -e "[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} has locked up!"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog}
 		sleep 1
 		fn_restartserver
 	else
 		echo -e "[\e[0;32m  OK  \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
 		sleep 1
 	fi
 fi
@@ -450,13 +454,13 @@ fn_rootcheck
 fn_syscheck
 fn_logmanager
 echo -en "[ .... ] Monitor is checking ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog}
 sleep 0.5
-updatecheck=`ps -ef|grep "${selfname} update"|grep -v grep|wc -l`
+updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l)
 if [ "${updatecheck}" = "0" ];then
 	fn_runcheck
 	echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
 	if [ "${emailnotification}" = "on" ];then
 		subject="${servicename} Monitor - Starting ${servername}"
 		failurereason="${servicename} process was not running"
@@ -466,14 +470,14 @@ if [ "${updatecheck}" = "0" ];then
 		fn_emailnotification
 	fi
 	sleep 0.5
-	echo -en "\n"	
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog}
+	echo -en "\n"
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog}
 	fn_startserver
 else
 	echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: Monitor detected ${servername} is currently checking for updates!"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog}
 	echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} will start when updating is complete"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog}
 fi
 }
 
@@ -481,13 +485,13 @@ fn_updateserver(){
 fn_rootcheck
 fn_syscheck
 echo -e "[\e[0;32m  OK  \e[0;39m] Updating ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog}
 cd ${rootdir}
 cd steamcmd
 ./steamcmd.sh +login ${steamuser} ${steampass} +force_install_dir ${filesdir} +app_update ${appid} validate +quit |tee -a ${logfile}
 if [ $(grep Denied ${logfile}|wc -l) -ge 1 ];then
 	echo -e "[\e[0;31m FAIL \e[0;39m] ${servicename}: STEAMAUTH error detected!: Server update failed"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: STEAMAUTH error detected!: Server update failed" >> ${logfile}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: STEAMAUTH error detected!: Server update failed" >> ${logfile}
 	if [ "${emailnotification}" = "on" ];then
 		mail -s "${servername}: Steam Auth Failure" ${email}< ${logfile}
 	fi
@@ -495,7 +499,7 @@ fi
 }
 
 fn_restartserver(){
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog}
 fn_stopserver
 fn_startserver
 }
@@ -505,15 +509,15 @@ fn_rootcheck
 fn_syscheck
 pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l)
 echo -en "[ .... ] Stopping ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog}
 sleep 0.5
 if [ "${pid}" == "0" ];then
 	echo -en "\r[\e[0;31m FAIL \e[0;39m] Stopping ${servicename}: ${servername} is already stopped"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog}
 else
 	tmux kill-session -t ${servicename}
 	echo -en "\r[\e[0;32m  OK  \e[0;39m] Stopping ${servicename}: ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -523,7 +527,7 @@ fn_startserver(){
 fn_rootcheck
 fn_syscheck
 echo -en "[ .... ] Starting ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog}
 sleep 0.5
 fn_runcheck
 fn_logmanager
@@ -532,14 +536,14 @@ mv ${consolelog} ${consolelogdate}
 cd ${systemdir}
 
 tmux new-session -d -s ${servicename} "./ucc-bin ${parms} |tee -a ${consolelog}"
-tmuxwc=`tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l`
 sleep 1
+tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l)
 if [ ${tmuxwc} -eq 0 ];then
 	echo -en "\r[\e[0;31m FAIL \e[0;39m] Starting ${servicename}: Failed to start ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog}
 else
 	echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -643,33 +647,10 @@ echo "================================="
 fn_header
 echo "Configuring ${gamename} Server"
 echo "================================="
-
-
 	sleep 1
 	echo "Copying ${systemdir}/default.ini to ${systemdir}/${ini}"
 	cp ${systemdir}/default.ini ${systemdir}/${ini}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
 	sleep 1
-
 	echo "Creating log directorys"
 	mkdir -v ${rootdir}/log
 	mkdir -v ${scriptlogdir}
@@ -691,18 +672,8 @@ echo "================================="
 	sleep 1
 	echo "Enabling WebAdmin"
 	sed -i 's/bEnabled=False/bEnabled=True/g' ${systemdir}/${ini}
-
-
-
-
-
 	sleep 1
 	echo "Forcing server to start to get ports/server name to display correctly"
-
-
-
-
-
 	sleep 1
 	cd ${rootdir}
 	${selfname} start
@@ -755,4 +726,4 @@ case "$1" in
 	echo "Usage: $0 {start|stop|restart|update|monitor|email-test|details|backup|console|debug|install|map-compressor|steam-auth}"
 	exit 1;;
 esac
-exit
+exit

+ 58 - 51
TeamFortress2/tf2server

@@ -3,7 +3,7 @@
 # Server Management Script
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
-# Version: 011013
+# Version: 101113
 
 #### Variables ####
 
@@ -12,7 +12,7 @@
 emailnotification="off"
 email="email@example.com"
 
-# Start vars
+# Start Variables
 defaultmap="ctf_2fort"
 port="27015"
 sourcetvport="27020"
@@ -24,20 +24,21 @@ parms="-game tf +map ${defaultmap} -strictportbind -port ${port} +tv_port ${sour
 # Steam
 appid="232250"
 
+# Server Details
+servicename="tf2-server"
+gamename="Team Fortress 2"
+engine="source"
+
 # Directorys
 rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 selfname="$0"
 filesdir="${rootdir}/serverfiles"
-servercfg="${filesdir}/tf/cfg/server.cfg"
+servercfg="${filesdir}/tf/cfg/${servicename}.cfg"
 backupdir="${rootdir}/backups"
 
 # Server Details
-servicename="tf2-server"
-gamename="Team Fortress 2"
-
-engine="source"
-servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'`
-rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'`
+servername$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g')
+rcon$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g')
 
 # Logging
 logdays="7"
@@ -76,7 +77,7 @@ tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicen
 if [ ${tmuxwc} -eq 1 ];then
 	fn_serverquery
 	echo -en "\r[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} is already running"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog}
 	sleep 0.5
 	echo -en "\n"
 	exit
@@ -84,21 +85,24 @@ fi
 }
 
 fn_logmanager(){
+if [ ! -e ${consolelog} ];then
+	touch ${consolelog}
+fi
 # log manager will active if finds logs older than ${logdays}
 if [ `find ${scriptlogdir}/* -mtime +${logdays} |wc -l` -ne "0" ];then
 	echo -e "[\e[0;32m  OK  \e[0;39m] Starting log cleaner"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog}
 	echo -e "[\e[0;36m INFO \e[0;39m] Removing logs older than ${logdays} days"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog}
 	find ${scriptlogdir}/* -mtime +${logdays} |tee >> ${scriptlog}
 	find ${consolelogdir}/* -mtime +${logdays} |tee >> ${scriptlog}
-	scriptcount=`find ${scriptlogdir}/* -mtime +${logdays}|wc -l`
-	consolecount=`find ${consolelogdir}/* -mtime +${logdays}|wc -l`
+	scriptcount=$(find ${scriptlogdir}/* -mtime +${logdays}|wc -l)
+	consolecount=$(find ${consolelogdir}/* -mtime +${logdays}|wc -l)
 	count=$((${scriptcount} + ${consolecount}))
 	find ${scriptlogdir}/* -mtime +${logdays} -exec rm {} \;
 	find ${consolelogdir}/* -mtime +${logdays} -exec rm {} \;
 	echo -e "[\e[0;36m INFO \e[0;39m] Log cleaner removed ${count} log files"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog}
 fi
 }
 
@@ -123,10 +127,10 @@ esac
 done
 fn_stopserver
 echo -en "[ .... ] Starting ${servicename}: ${servername} debug mode"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog}
 sleep 0.5
 echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog}
 sleep 0.5
 echo -en "\n"
 cd ${filesdir}
@@ -157,7 +161,7 @@ sleep 0.5
 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicename}|wc -l)
 if [ ${tmuxwc} -eq 1 ];then
 	echo -e "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename} console"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog}
 	sleep 1
 	tmux attach-session -t ${servicename}
 else
@@ -207,17 +211,17 @@ if [ ${tmuxwc} -eq 1 ];then
 	done
 fi
 echo -en "[ .... ] Starting ${servicename}: ${servername} backup"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog}
 sleep 0.5
 echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername} backup"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog}
 sleep 1
 echo -en "\n"
 cd ${rootdir}
 mkdir ${backupdir} > /dev/null 2>&1
-tar -cvzf  ${backupdir}/${backupname}.tar.gz  --exclude '${backupdir}' ${rootdir}
+tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir}
 echo -en "\r${servicename} backup complete"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog}
 }
 
 fn_details(){
@@ -227,8 +231,8 @@ echo "============================"
 echo ""
 echo "${servername} Ports"
 echo "======================="
-servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'`
-rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'`
+servername=$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g')
+rcon=$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g')
 echo "Ports the server is currently using"
 echo ""
 echo "DIRECTION	DESCRIPTION		PORT"
@@ -259,7 +263,7 @@ if [ -f /etc/lsb-release ]; then
 elif [ -f /etc/debian_version ]; then
 	os="Debian $(cat /etc/debian_version)"
 elif [ -f /etc/redhat-release ]; then
-	os=`cat /etc/redhat-release`
+	os=$(cat /etc/redhat-release)
 else
 	os="$(uname -s) $(uname -r)"
 fi
@@ -316,7 +320,7 @@ echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${
 fn_emailtest(){
 fn_rootcheck
 fn_syscheck
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog}
 if [ "${emailnotification}" = "on" ];then
 	subject="${servicename} Email Test Notification - Testing ${servername}"
 	failurereason="Testing ${servicename} email notification"
@@ -324,7 +328,7 @@ if [ "${emailnotification}" = "on" ];then
 	fn_emailnotification
 else
 	echo -e "[\e[0;31m FAIL \e[0;39m] Email notification not enabled"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -335,22 +339,22 @@ fn_serverquery(){
 # detects if the server locks up
 if [ -f serverquery.py ];then
 	echo -e "[\e[0;36m INFO \e[0;39m] serverquery.py detected"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog}
 	echo -e "[\e[0;32m  OK  \e[0;39m] Querying ${servicename}: ${servername}: QUERYING"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog}
-	serverquery=`./serverquery.py 127.0.0.1 ${port} 2>&1`
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog}
+	serverquery=$(./serverquery.py 127.0.0.1 ${port} 2>&1)
 	sleep 1
 	if [ "${serverquery}" = "ERROR 1" ]||[ "${serverquery}" = "ERROR 2" ]||[ "${serverquery}" = "ERROR 3" ];then
 		echo -e "[\e[0;31m FAIL \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
 		sleep 1
 		echo -e "[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} has locked up!"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog}
 		sleep 1
 		fn_restartserver
 	else
 		echo -e "[\e[0;32m  OK  \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
 		sleep 1
 	fi
 fi
@@ -361,13 +365,13 @@ fn_rootcheck
 fn_syscheck
 fn_logmanager
 echo -en "[ .... ] Monitor is checking ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog}
 sleep 0.5
-updatecheck=`ps -ef|grep "${selfname} update"|grep -v grep|wc -l`
+updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l)
 if [ "${updatecheck}" = "0" ];then
 	fn_runcheck
 	echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
 	if [ "${emailnotification}" = "on" ];then
 		subject="${servicename} Monitor - Starting ${servername}"
 		failurereason="${servicename} process was not running"
@@ -377,14 +381,14 @@ if [ "${updatecheck}" = "0" ];then
 		fn_emailnotification
 	fi
 	sleep 0.5
-	echo -en "\n"	
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog}
+	echo -en "\n"
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog}
 	fn_startserver
 else
 	echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: Monitor detected ${servername} is currently checking for updates!"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog}
 	echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} will start when updating is complete"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog}
 fi
 }
 
@@ -392,14 +396,14 @@ fn_updateserver(){
 fn_rootcheck
 fn_syscheck
 echo -e "[\e[0;32m  OK  \e[0;39m] Updating ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog}
 cd ${rootdir}
 cd steamcmd
 ./steamcmd.sh +login anonymous +force_install_dir ${filesdir} +app_update ${appid} validate +quit |tee -a ${scriptlog}
 }
 
 fn_restartserver(){
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog}
 fn_stopserver
 fn_startserver
 }
@@ -409,15 +413,15 @@ fn_rootcheck
 fn_syscheck
 pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l)
 echo -en "[ .... ] Stopping ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog}
 sleep 0.5
 if [ "${pid}" == "0" ];then
 	echo -en "\r[\e[0;31m FAIL \e[0;39m] Stopping ${servicename}: ${servername} is already stopped"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog}
 else
 	tmux kill-session -t ${servicename}
 	echo -en "\r[\e[0;32m  OK  \e[0;39m] Stopping ${servicename}: ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -427,7 +431,7 @@ fn_startserver(){
 fn_rootcheck
 fn_syscheck
 echo -en "[ .... ] Starting ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog}
 sleep 0.5
 fn_runcheck
 fn_logmanager
@@ -435,14 +439,14 @@ mv ${scriptlog} ${scriptlogdate}
 mv ${consolelog} ${consolelogdate}
 cd ${filesdir}
 tmux new-session -d -s ${servicename} "./srcds_run ${parms} |tee -a ${consolelog}"
-tmuxwc=`tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l`
 sleep 1
+tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l)
 if [ ${tmuxwc} -eq 0 ];then
 	echo -en "\r[\e[0;31m FAIL \e[0;39m] Starting ${servicename}: Failed to start ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog}
 else
 	echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -516,7 +520,7 @@ while true; do
 	[Yy]* ) break;;
 	[Nn]* ) echo Exiting; return 1 ;;
 	* ) echo "Please answer yes or no.";;
-    esac
+	esac
 done
 fn_header
 fn_steamdl
@@ -551,6 +555,9 @@ echo "================================="
 	sleep 1
 	echo ""
 	echo "Creating server.cfg"
+	sleep 1
+	echo "Saving as:"
+	echo "${servercfg}"
 	touch ${servercfg}
 	{
 		echo -e "// server name"
@@ -627,4 +634,4 @@ case "$1" in
 	echo "Usage: $0 {start|stop|restart|update|monitor|email-test|details|backup|console|debug|install}"
 	exit 1;;
 esac
-exit
+exit

+ 64 - 55
TheHiddenSource/thsserver

@@ -3,7 +3,7 @@
 # Server Management Script
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
-# Version: 011013
+# Version: 101113
 
 #### Variables ####
 
@@ -12,29 +12,29 @@
 emailnotification="off"
 email="email@example.com"
 
-# Start vars
+# Start Variables
 defaultmap="hdn_docks"
 port="27015"
 sourcetvport="27020"
 clientport="27005"
-
 parms="-game hidden +map ${defaultmap} -port ${port} +tv_port ${sourcetvport} +clientport ${clientport}"
 
 #### Advanced Variables ####
 
+# Server Details
+servicename="ths-server"
+gamename="The Hidden: Source"
+engine="source"
+
 # Directorys
-rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )"
 selfname="$0"
 filesdir="${rootdir}/serverfiles"
-servercfg="${filesdir}/hidden/cfg/server.cfg"
+servercfg="${filesdir}/hidden/cfg/${servicename}.cfg"
 
 # Server Details
-servicename="hs-server"
-gamename="Hidden: Source"
-engine="source"
-
-servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'`
-rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'`
+servername$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g')
+rcon$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g')
 
 # Logging
 logdays="7"
@@ -46,6 +46,9 @@ scriptlog="${scriptlogdir}/${servicename}-script.log"
 consolelog="${consolelogdir}/${servicename}-console.log"
 emaillog="${scriptlogdir}/${servicename}-email.log"
 
+scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log"
+consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log"
+
 ##### Script #####
 # Do not edit
 # unless you know
@@ -70,7 +73,7 @@ tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicen
 if [ ${tmuxwc} -eq 1 ];then
 	fn_serverquery
 	echo -en "\r[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} is already running"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog}
 	sleep 0.5
 	echo -en "\n"
 	exit
@@ -78,21 +81,24 @@ fi
 }
 
 fn_logmanager(){
+if [ ! -e ${consolelog} ];then
+	touch ${consolelog}
+fi
 # log manager will active if finds logs older than ${logdays}
 if [ `find ${scriptlogdir}/* -mtime +${logdays} |wc -l` -ne "0" ];then
 	echo -e "[\e[0;32m  OK  \e[0;39m] Starting log cleaner"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog}
 	echo -e "[\e[0;36m INFO \e[0;39m] Removing logs older than ${logdays} days"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog}
 	find ${scriptlogdir}/* -mtime +${logdays} |tee >> ${scriptlog}
 	find ${consolelogdir}/* -mtime +${logdays} |tee >> ${scriptlog}
-	scriptcount=`find ${scriptlogdir}/* -mtime +${logdays}|wc -l`
-	consolecount=`find ${consolelogdir}/* -mtime +${logdays}|wc -l`
+	scriptcount=$(find ${scriptlogdir}/* -mtime +${logdays}|wc -l)
+	consolecount=$(find ${consolelogdir}/* -mtime +${logdays}|wc -l)
 	count=$((${scriptcount} + ${consolecount}))
 	find ${scriptlogdir}/* -mtime +${logdays} -exec rm {} \;
 	find ${consolelogdir}/* -mtime +${logdays} -exec rm {} \;
 	echo -e "[\e[0;36m INFO \e[0;39m] Log cleaner removed ${count} log files"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog}
 fi
 }
 
@@ -117,10 +123,10 @@ esac
 done
 fn_stopserver
 echo -en "[ .... ] Starting ${servicename}: ${servername} debug mode"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog}
 sleep 0.5
 echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog}
 sleep 0.5
 echo -en "\n"
 cd ${filesdir}
@@ -151,7 +157,7 @@ sleep 0.5
 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicename}|wc -l)
 if [ ${tmuxwc} -eq 1 ];then
 	echo -e "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename} console"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog}
 	sleep 1
 	tmux attach-session -t ${servicename}
 else
@@ -201,17 +207,17 @@ if [ ${tmuxwc} -eq 1 ];then
 	done
 fi
 echo -en "[ .... ] Starting ${servicename}: ${servername} backup"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog}
 sleep 0.5
 echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername} backup"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog}
 sleep 1
 echo -en "\n"
 cd ${rootdir}
 mkdir ${backupdir} > /dev/null 2>&1
-tar -cvzf  ${backupdir}/${backupname}.tar.gz  --exclude '${backupdir}' ${rootdir}
+tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir}
 echo -en "\r${servicename} backup complete"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog}
 }
 
 fn_details(){
@@ -221,8 +227,8 @@ echo "============================"
 echo ""
 echo "${servername} Ports"
 echo "======================="
-servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'`
-rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'`
+servername=$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g')
+rcon=$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g')
 echo "Ports the server is currently using"
 echo ""
 echo "DIRECTION	DESCRIPTION		PORT"
@@ -253,7 +259,7 @@ if [ -f /etc/lsb-release ]; then
 elif [ -f /etc/debian_version ]; then
 	os="Debian $(cat /etc/debian_version)"
 elif [ -f /etc/redhat-release ]; then
-	os=`cat /etc/redhat-release`
+	os=$(cat /etc/redhat-release)
 else
 	os="$(uname -s) $(uname -r)"
 fi
@@ -310,7 +316,7 @@ echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${
 fn_emailtest(){
 fn_rootcheck
 fn_syscheck
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog}
 if [ "${emailnotification}" = "on" ];then
 	subject="${servicename} Email Test Notification - Testing ${servername}"
 	failurereason="Testing ${servicename} email notification"
@@ -318,7 +324,7 @@ if [ "${emailnotification}" = "on" ];then
 	fn_emailnotification
 else
 	echo -e "[\e[0;31m FAIL \e[0;39m] Email notification not enabled"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -329,22 +335,22 @@ fn_serverquery(){
 # detects if the server locks up
 if [ -f serverquery.py ];then
 	echo -e "[\e[0;36m INFO \e[0;39m] serverquery.py detected"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog}
 	echo -e "[\e[0;32m  OK  \e[0;39m] Querying ${servicename}: ${servername}: QUERYING"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog}
-	serverquery=`./serverquery.py 127.0.0.1 ${port} 2>&1`
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog}
+	serverquery=$(./serverquery.py 127.0.0.1 ${port} 2>&1)
 	sleep 1
 	if [ "${serverquery}" = "ERROR 1" ]||[ "${serverquery}" = "ERROR 2" ]||[ "${serverquery}" = "ERROR 3" ];then
 		echo -e "[\e[0;31m FAIL \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
 		sleep 1
 		echo -e "[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} has locked up!"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog}
 		sleep 1
 		fn_restartserver
 	else
 		echo -e "[\e[0;32m  OK  \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}"
-		echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
+		echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog}
 		sleep 1
 	fi
 fi
@@ -355,13 +361,13 @@ fn_rootcheck
 fn_syscheck
 fn_logmanager
 echo -en "[ .... ] Monitor is checking ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog}
 sleep 0.5
-updatecheck=`ps -ef|grep "${selfname} update"|grep -v grep|wc -l`
+updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l)
 if [ "${updatecheck}" = "0" ];then
 	fn_runcheck
 	echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
 	if [ "${emailnotification}" = "on" ];then
 		subject="${servicename} Monitor - Starting ${servername}"
 		failurereason="${servicename} process was not running"
@@ -371,14 +377,14 @@ if [ "${updatecheck}" = "0" ];then
 		fn_emailnotification
 	fi
 	sleep 0.5
-	echo -en "\n"	
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog}
+	echo -en "\n"
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog}
 	fn_startserver
 else
 	echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: Monitor detected ${servername} is currently checking for updates!"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog}
 	echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} will start when updating is complete"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog}
 fi
 }
 
@@ -386,14 +392,14 @@ fn_updateserver(){
 fn_rootcheck
 fn_syscheck
 echo -e "[\e[0;32m  OK  \e[0;39m] Updating ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog}
 cd ${rootdir}
 cd steamcmd
 ./steamcmd.sh +login anonymous +force_install_dir ${filesdir} +app_update ${appid} validate +quit |tee -a ${scriptlog}
 }
 
 fn_restartserver(){
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog}
 fn_stopserver
 fn_startserver
 }
@@ -403,15 +409,15 @@ fn_rootcheck
 fn_syscheck
 pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l)
 echo -en "[ .... ] Stopping ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog}
 sleep 0.5
 if [ "${pid}" == "0" ];then
 	echo -en "\r[\e[0;31m FAIL \e[0;39m] Stopping ${servicename}: ${servername} is already stopped"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog}
 else
 	tmux kill-session -t ${servicename}
 	echo -en "\r[\e[0;32m  OK  \e[0;39m] Stopping ${servicename}: ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -421,7 +427,7 @@ fn_startserver(){
 fn_rootcheck
 fn_syscheck
 echo -en "[ .... ] Starting ${servicename}: ${servername}"
-echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog}
+echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog}
 sleep 0.5
 fn_runcheck
 fn_logmanager
@@ -429,14 +435,14 @@ mv ${scriptlog} ${scriptlogdate}
 mv ${consolelog} ${consolelogdate}
 cd ${filesdir}
 tmux new-session -d -s ${servicename} "./srcds_run ${parms} |tee -a ${consolelog}"
-tmuxwc=`tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l`
 sleep 1
+tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l)
 if [ ${tmuxwc} -eq 0 ];then
 	echo -en "\r[\e[0;31m FAIL \e[0;39m] Starting ${servicename}: Failed to start ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog}
 else
 	echo -en "\r[\e[0;32m  OK  \e[0;39m] Starting ${servicename}: ${servername}"
-	echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog}
+	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog}
 fi
 sleep 0.5
 echo -en "\n"
@@ -561,7 +567,7 @@ while true; do
 	[Yy]* ) break;;
 	[Nn]* ) echo Exiting; return 1 ;;
 	* ) echo "Please answer yes or no.";;
-    esac
+	esac
 done
 fn_header
 echo ""
@@ -598,6 +604,9 @@ echo "================================="
 	sleep 1
 	echo ""
 	echo "Creating server.cfg"
+	sleep 1
+	echo "Saving as:"
+	echo "${servercfg}"
 	touch ${servercfg}
 	{
 		echo -e "// server name"
@@ -659,7 +668,7 @@ case "$1" in
 	details)
 		fn_details;;
 	*)
-		echo "Usage: $0 {start|stop|restart|update|monitor|install|debug|email-test|details}"
-		exit 1;;
+	echo "Usage: $0 {start|stop|restart|update|monitor|install|debug|email-test|details}"
+	exit 1;;
 esac
-exit
+exit

+ 5 - 3
UnrealTournament2004/ut2k4server

@@ -20,7 +20,7 @@ systemdir="${filesdir}/System"
 backupdir="${rootdir}/backups"
 compressedmapsdir="${rootdir}/Maps-Compressed"
 
-# Server names
+# Server Details
 servicename="ut2k4-server"
 gamename="Unreal Tournament 2004"
 engine="unreal2"
@@ -39,7 +39,7 @@ emaillog="${scriptlogdir}/${servicename}-email.log"
 scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log"
 consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log"
 
-# Start vars
+# Start Variables
 defaultmap="DM-Rankin"
 parms="server ${defaultmap}?game=XGame.xDMGame -nohomedir ini=${ini} log=${logfile}"
 
@@ -423,12 +423,14 @@ sleep 0.5
 updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l)
 if [ "${updatecheck}" = "0" ];then
 	fn_runcheck
-	echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!\n"
+	echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!"
 	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
 	if [ "${emailnotification}" = "on" ];then
 		subject="${servicename} Monitor - Starting ${servername}"
 		failurereason="${servicename} process was not running"
 		actiontaken="restarted ${servicename}"
+		sleep 0.5
+		echo -en "\n"
 		fn_emailnotification
 	fi
 	sleep 0.5

+ 6 - 4
UnrealTournament99/ut99server

@@ -20,7 +20,7 @@ systemdir="${filesdir}/System"
 backupdir="${rootdir}/backups"
 compressedmapsdir="${rootdir}/Maps-Compressed"
 
-# Server names
+# Server Details
 servicename="ut99-server"
 gamename="Unreal Tournament 99"
 engine="unreal"
@@ -39,7 +39,7 @@ emaillog="${scriptlogdir}/${servicename}-email.log"
 scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log"
 consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log"
 
-# Start vars
+# Start Variables
 defaultmap="DM-Deck16]["
 parms="server ${defaultmap}.unr ini=${systemdir}/${ini}"
 
@@ -413,12 +413,14 @@ sleep 0.5
 updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l)
 if [ "${updatecheck}" = "0" ];then
 	fn_runcheck
-	echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!\n"
+	echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!"
 	echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog}
 	if [ "${emailnotification}" = "on" ];then
 		subject="${servicename} Monitor - Starting ${servername}"
 		failurereason="${servicename} process was not running"
 		actiontaken="restarted ${servicename}"
+		sleep 0.5
+		echo -en "\n"
 		fn_emailnotification
 	fi
 	sleep 0.5
@@ -596,7 +598,7 @@ echo "================================="
 	mkdir -v ${filesdir}
 	cd ${filesdir}
 	tar -zxvf ut-server-436.tar.gz ut-server/ --strip-components=1
-	tar jxvf UTPGPatch451.tar.bz2
+	tar -jxvf UTPGPatch451.tar.bz2
 	cd ${systemdir}
 	while true; do
 		read -p "Was the install successful? [y/N]" yn