#!/bin/bash
# SRCDS restart
# Stefan, 2018
# Edit these:
screen_name=test_server #screen name obviously. should be specified in your startup script
dir=/home/steam/test_srv1 #directory of your startup script
start=./start_silent #your startup script
# Don't touch if you don't know what you're doing.
scrsend()
{
screen -S $screen_name -p 0 -X stuff "$1^M"
}
scrsend "sm_say Reloading..."
sleep 1
scrsend "sm_say Server is going for planned restart. You will be reconnected."
sleep 1
scrsend "sm_say Planned server restart in 30 seconds ..."
sleep 10
scrsend "sm_say Planned server restart in 20 seconds ..."
sleep 10
scrsend "sm_say Planned server restart in 10 seconds ..."
sleep 5
scrsend "sm_say Planned server restart in 5 seconds ..."
sleep 1
scrsend "sm_say Planned server restart in 4 seconds ..."
sleep 1
scrsend "sm_say Planned server restart in 3 seconds ..."
sleep 1
scrsend "sm_say Planned server restart in 2 seconds ..."
sleep 1
scrsend "sm_say Planned server restart in 1 seconds ..."
sleep 1
scrsend "sm_exec @humans retry" # requires "UsefulCommands" by eyal282 @ Alliedmods.net
sleep 0.2
kill $(screen -ls | grep $screen_name | awk -F . {'print $1'})
if screen -ls | grep "$screen_name" ; then
echo "$screen_name still running, investigate manually." && exit 0
else
echo "Screen has been killed. Restarting..."
fi
cd $dir && $start
if screen -ls | grep "$screen_name" ; then
echo "$screen_name has just been normally restarted." && exit 0
else
echo "Warning: $screen_name is not running!!!" && exit 0
fi