|
|
@ -34,54 +34,41 @@ fn_stop_ark(){ |
|
|
|
# first start with the parameters from the parms line |
|
|
|
fn_printwarn "attempting to determine any in-use ports" |
|
|
|
fn_scriptlog "attempting to determine any in-use ports" |
|
|
|
port=$(grep ^parms= ${servername} |\ |
|
|
|
awk -f"queryport=" '{print $2}' |\ |
|
|
|
sed "s/[^[:digit:].*].*//g" ) |
|
|
|
|
|
|
|
echo port is $port |
|
|
|
read a |
|
|
|
if [ -z $port ] ; then |
|
|
|
fn_printwarn "no port found in the ${servername} script" |
|
|
|
fn_scriptlog "no port found in the ${servername} script" |
|
|
|
#port=$(grep ^parms= arkserver |\ |
|
|
|
# awk -F"QueryPort=" '{print $2}' |\ |
|
|
|
# sed "s/[^[:digit:].*].*//g" ) |
|
|
|
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+="/serverfiles/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini" |
|
|
|
userconfigfile+="/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini" |
|
|
|
port=$(grep ^QueryPort= ${userconfigfile} | cut -d= -f2 | sed "s/[^[:digit:].*].*//g") |
|
|
|
fi |
|
|
|
echo port is $port |
|
|
|
read b |
|
|
|
if [ -z $port ] ; then |
|
|
|
fn_printwarn "no port found in the GameUsersettings.ini file" |
|
|
|
fn_scriptlog "no port found in the GameUsersettings.ini file" |
|
|
|
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 |
|
|
|
# pid=$(lsof -ti udp:${port}) |
|
|
|
# might need netstat here if lsof isn't installed. |
|
|
|
# netstat variation: |
|
|
|
pid=$(netstat -nap 2>/dev/null | grep ^udp[:space:] |\ |
|
|
|
grep :${port}[[:space:]] | rev | awk '{print $1}' |\ |
|
|
|
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) |
|
|
|
echo pid is $pid |
|
|
|
read c |
|
|
|
# |
|
|
|
# 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. |
|
|
|
# kill -9 $pid |
|
|
|
while kill -0 $pid |
|
|
|
do |
|
|
|
echo "kill code id $?" |
|
|
|
read d |
|
|
|
fn_printwarn "process is still bound to the port" |
|
|
|
fn_scriptlog "process is still bound to the port" |
|
|
|
sleep 1 |
|
|
|
fn_printdots "${servername}" |
|
|
|
fn_scriptlog "${servername}" |
|
|
|
done |
|
|
|
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 |
|
|
|
|
|
|
@ -213,7 +200,8 @@ if [ "${gamename}" == "Teamspeak 3" ]; then |
|
|
|
fn_stop_teamspeak3 |
|
|
|
else |
|
|
|
fn_stop_tmux |
|
|
|
if [ "${gamename}" == "ARK: Survivial Evolved" ]; then |
|
|
|
fn_stop_ark |
|
|
|
fi |
|
|
|
if [ "${gamename}" == "ARK: Survivial Evolved" ]; then |
|
|
|
fn_stop_ark |
|
|
|
echo -en "\n" |
|
|
|
fi |
|
|
|
fi |
|
|
|