|
|
@ -8,6 +8,27 @@ |
|
|
|
|
|
|
|
local modulename="Stopping" |
|
|
|
|
|
|
|
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_teamspeak3(){ |
|
|
|
fn_check_root |
|
|
|
fn_check_systemdir |
|
|
@ -16,12 +37,12 @@ fn_scriptlog "${servername}" |
|
|
|
sleep 1 |
|
|
|
fn_check_ts3status |
|
|
|
if [ "${ts3status}" = "No server running (ts3server.pid is missing)" ];then |
|
|
|
fn_printfail "${servername} is already stopped" |
|
|
|
fn_scriptlog "${servername} is already stopped" |
|
|
|
fn_printfail "${servername} is already stopped" |
|
|
|
fn_scriptlog "${servername} is already stopped" |
|
|
|
else |
|
|
|
${filesdir}/ts3server_startscript.sh stop inifile=${ini} > /dev/null 2>&1 |
|
|
|
fn_printok "${servername}" |
|
|
|
fn_scriptlog "Stopped ${servername}" |
|
|
|
${filesdir}/ts3server_startscript.sh stop inifile=${ini} > /dev/null 2>&1 |
|
|
|
fn_printok "${servername}" |
|
|
|
fn_scriptlog "Stopped ${servername}" |
|
|
|
fi |
|
|
|
# Remove lock file |
|
|
|
rm -f "${rootdir}/${lockselfname}" |
|
|
@ -44,45 +65,76 @@ if [ "${gamename}" == "7 Days To Die" ] ; then |
|
|
|
fn_printdots "Attempting graceful shutdown via telnet" |
|
|
|
fn_scriptlog "Attempting graceful shutdown via telnet" |
|
|
|
sleep 1 |
|
|
|
|
|
|
|
|
|
|
|
telnetip=127.0.0.1 |
|
|
|
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" |
|
|
|
') |
|
|
|
sdtd_telnet |
|
|
|
|
|
|
|
# If failed using localhost will use servers ip |
|
|
|
refused=$(echo -en "\n ${sdtdshutdown}"| grep "Timeout or EOF") |
|
|
|
if [ -n "${refused}" ]; then |
|
|
|
fn_check_ip |
|
|
|
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}" |
|
|
|
fn_printok "Attempting graceful shutdown via telnet" |
|
|
|
fn_scriptlog "Attempting graceful shutdown succeeded" |
|
|
|
echo -en "\n\n" |
|
|
|
sleep 1 |
|
|
|
fn_printdots "${servername}" |
|
|
|
fn_scriptlog "${servername}" |
|
|
|
sleep 1 |
|
|
|
fi |
|
|
|
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" |
|
|
|
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 |
|
|
|
tmux kill-session -t ${servicename} |
|
|
|
fn_printok "${servername}" |
|
|
|
fn_scriptlog "Stopped ${servername}" |
|
|
|
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 |
|
|
|
tmux kill-session -t ${servicename} |
|
|
|
fn_printok "${servername}" |
|
|
|
fn_scriptlog "Stopped ${servername}" |
|
|
|
fi |
|
|
|
fi |
|
|
|
sleep 1 |
|
|
|
echo -en "\n" |
|
|
|
} |
|
|
|
|
|
|
|
if [ "${gamename}" == "Teamspeak 3" ]; then |
|
|
|
fn_stop_teamspeak3 |
|
|
|
fn_stop_teamspeak3 |
|
|
|
else |
|
|
|
fn_stop_tmux |
|
|
|
fi |
|
|
|
fn_stop_tmux |
|
|
|
fi |