1 changed files with 0 additions and 202 deletions
@ -1,202 +0,0 @@ |
|||||
#!/bin/bash |
|
||||
# LGSM command_stop.sh function |
|
||||
# Author: Daniel Gibbs |
|
||||
# Website: http://gameservermanagers.com |
|
||||
lgsm_version="271215" |
|
||||
|
|
||||
# Description: Stops the server. |
|
||||
|
|
||||
local modulename="Stopping" |
|
||||
function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" |
|
||||
|
|
||||
sdtd_telnet(){ |
|
||||
sdtdshutdown=$( expect -c ' |
|
||||
proc abort {} { |
|
||||
puts "Timeout or EOF\n" |
|
||||
exit 1 |
|
||||
} |
|
||||
spawn telnet '"${telnetip}"' '"${telnetport}"' |
|
||||
expect { |
|
||||
"password:" { send "'"${telnetpass}"'\r" } |
|
||||
default abort |
|
||||
} |
|
||||
expect { |
|
||||
"session." { send "shutdown\r" } |
|
||||
default abort |
|
||||
} |
|
||||
expect { eof } |
|
||||
puts "Completed.\n" |
|
||||
') |
|
||||
} |
|
||||
|
|
||||
fn_stop_ark(){ |
|
||||
fn_printwarn "attempting to determine any in-use ports" |
|
||||
fn_scriptlog "attempting to determine any in-use ports" |
|
||||
info_config.sh |
|
||||
if [ -z $queryport ] ; then |
|
||||
fn_printwarn "no queryport found in the arkserver script" |
|
||||
fn_scriptlog "no queryport found in the arkserver script" |
|
||||
userconfigfile="${filesdir}" |
|
||||
userconfigfile+="/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini" |
|
||||
port=$(grep ^QueryPort= ${userconfigfile} | cut -d= -f2 | sed "s/[^[:digit:].*].*//g") |
|
||||
fi |
|
||||
if [ -z $queryport ] ; then |
|
||||
fn_printwarn "no queryport found in the GameUsersettings.ini file" |
|
||||
fn_scriptlog "no queryport found in the GameUsersettings.ini file" |
|
||||
return |
|
||||
fi |
|
||||
|
|
||||
if [[ ${#port} -gt 0 ]] ; then |
|
||||
fn_printwarn "QueryPort $queryport found in the configs. Checking to see if it's still bound." |
|
||||
fn_scriptlog "QueryPort $queryport found in the configs. Checking to see if it's still bound." |
|
||||
pid=$(netstat -nap 2>/dev/null | grep ^udp[[:space:]] |\ |
|
||||
grep :${queryport}[[:space:]] | rev | awk '{print $1}' |\ |
|
||||
rev | cut -d\/ -f1) |
|
||||
# |
|
||||
# check for a valid pid |
|
||||
let pid+=0 # turns an empty string into a valid number, '0', |
|
||||
# and a valid numeric pid remains unchanged. |
|
||||
if [[ $pid -gt 1 && $pid -le $(cat /proc/sys/kernel/pid_max) ]] ; then |
|
||||
# kill the process still listening on that port. |
|
||||
fn_printdots "Killing process $pid" |
|
||||
fn_scriptlog "Killing process $pid" |
|
||||
kill -9 $pid |
|
||||
fi # end if for pid range check |
|
||||
fn_printok "${servername} stopped and ports cleared" |
|
||||
fn_scriptlog "Ports cleared for ${servername}" |
|
||||
fi # end if for port check |
|
||||
} # end of fn_stop_ark |
|
||||
|
|
||||
|
|
||||
fn_stop_teamspeak3(){ |
|
||||
check.sh |
|
||||
fn_printdots "${servername}" |
|
||||
fn_scriptlog "${servername}" |
|
||||
sleep 1 |
|
||||
info_ts3status.sh |
|
||||
if [ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then |
|
||||
fn_printfail "${servername} is already stopped" |
|
||||
fn_scriptlog "${servername} is already stopped" |
|
||||
else |
|
||||
${filesdir}/ts3server_startscript.sh stop > /dev/null 2>&1 |
|
||||
fn_printok "${servername}" |
|
||||
fn_scriptlog "Stopped ${servername}" |
|
||||
fi |
|
||||
# Remove lock file |
|
||||
rm -f "${rootdir}/${lockselfname}" |
|
||||
sleep 1 |
|
||||
echo -en "\n" |
|
||||
} |
|
||||
|
|
||||
fn_stop_tmux(){ |
|
||||
check.sh |
|
||||
info_config.sh |
|
||||
fn_printdots "${servername}" |
|
||||
fn_scriptlog "${servername}" |
|
||||
sleep 1 |
|
||||
|
|
||||
if [ "${gamename}" == "7 Days To Die" ] ; then |
|
||||
# if game is 7 Days To Die, we need special, graceful shutdown via telnet connection. |
|
||||
# Set below variable to be called for expect to operate correctly.. |
|
||||
fn_printdots "Attempting graceful shutdown via telnet" |
|
||||
fn_scriptlog "Attempting graceful shutdown via telnet" |
|
||||
sleep 1 |
|
||||
telnetip=127.0.0.1 |
|
||||
sdtd_telnet |
|
||||
|
|
||||
# If failed using localhost will use servers ip |
|
||||
refused=$(echo -en "\n ${sdtdshutdown}"| grep "Timeout or EOF") |
|
||||
if [ -n "${refused}" ]; then |
|
||||
telnetip=${ip} |
|
||||
fn_printwarn "Attempting graceful shutdown via telnet: localhost failed" |
|
||||
fn_scriptlog "Warning! Attempting graceful shutdown failed using localhost" |
|
||||
sleep 5 |
|
||||
echo -en "\n" |
|
||||
fn_printdots "Attempting graceful shutdown via telnet: using ${telnetip}" |
|
||||
fn_scriptlog "Attempting graceful shutdown via telnet using ${telnetip}" |
|
||||
sdtd_telnet |
|
||||
sleep 1 |
|
||||
fi |
|
||||
|
|
||||
refused=$(echo -en "\n ${sdtdshutdown}"| grep "Timeout or EOF") |
|
||||
completed=$(echo -en "\n ${sdtdshutdown}"| grep "Completed.") |
|
||||
if [ -n "${refused}" ]; then |
|
||||
fn_printfail "Attempting graceful shutdown via telnet" |
|
||||
fn_scriptlog "Attempting graceful shutdown failed" |
|
||||
fn_scriptlog "${refused}" |
|
||||
elif [ -n "${completed}" ]; then |
|
||||
fn_printok "Attempting graceful shutdown via telnet" |
|
||||
fn_scriptlog "Attempting graceful shutdown succeeded" |
|
||||
else |
|
||||
fn_printfail "Attempting graceful shutdown via telnet: Unknown error" |
|
||||
fn_scriptlog "Attempting graceful shutdown failed" |
|
||||
fn_scriptlog "Unknown error" |
|
||||
fi |
|
||||
sleep 1 |
|
||||
echo -en "\n\n" |
|
||||
echo -en "Telnet output:" |
|
||||
echo -en "\n ${sdtdshutdown}" |
|
||||
echo -en "\n\n" |
|
||||
sleep 1 |
|
||||
fn_printdots "${servername}" |
|
||||
fn_scriptlog "${servername}" |
|
||||
sleep 5 |
|
||||
pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") |
|
||||
if [ "${pid}" == "0" ]; then |
|
||||
fn_printok "${servername} is already stopped using graceful shutdown" |
|
||||
fn_scriptlog "${servername} is already stopped using graceful shutdown" |
|
||||
else |
|
||||
tmux kill-session -t "${servicename}" |
|
||||
fn_printok "${servername}" |
|
||||
fn_scriptlog "Stopped ${servername}" |
|
||||
fi |
|
||||
|
|
||||
else |
|
||||
pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") |
|
||||
if [ "${pid}" == "0" ]; then |
|
||||
fn_printfail "${servername} is already stopped" |
|
||||
fn_scriptlog "${servername} is already stopped" |
|
||||
else |
|
||||
|
|
||||
if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then |
|
||||
sleep 1 |
|
||||
fn_printdots "Attempting graceful shutdown" |
|
||||
fn_scriptlog "Attempting graceful shutdown" |
|
||||
tmux send -t "${servicename}" quit ENTER > /dev/null 2>&1 |
|
||||
counter=0 |
|
||||
while [ "${pid}" != "0" -a $counter -lt 30 ]; do |
|
||||
pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") |
|
||||
sleep 1 |
|
||||
let counter=counter+1 |
|
||||
if [ "${counter}" -gt "1" ]; then |
|
||||
fn_printdots "Attempting graceful shutdown: ${counter}" |
|
||||
fi |
|
||||
done |
|
||||
pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:") |
|
||||
if [ "${pid}" == "0" ]; then |
|
||||
fn_printok "Attempting graceful shutdown" |
|
||||
else |
|
||||
fn_printfail "Attempting graceful shutdown" |
|
||||
fi |
|
||||
fi |
|
||||
|
|
||||
tmux kill-session -t "${servicename}" > /dev/null 2>&1 |
|
||||
fn_printok "${servername}" |
|
||||
fn_scriptlog "Stopped ${servername}" |
|
||||
fi |
|
||||
fi |
|
||||
# Remove lock file |
|
||||
rm -f "${rootdir}/${lockselfname}" |
|
||||
sleep 1 |
|
||||
echo -en "\n" |
|
||||
} |
|
||||
|
|
||||
if [ "${gamename}" == "Teamspeak 3" ]; then |
|
||||
fn_stop_teamspeak3 |
|
||||
else |
|
||||
fn_stop_tmux |
|
||||
if [ "${gamename}" == "ARK: Survivial Evolved" ]; then |
|
||||
fn_stop_ark |
|
||||
echo -en "\n" |
|
||||
fi |
|
||||
fi |
|
Loading…
Reference in new issue