| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- #!/bin/bash
- # LGSM fn_stop function
- # Author: Daniel Gibbs
- # Website: http://gameservermanagers.com
- # Version: 180615
- # Description: Stops the server.
- 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
- fn_printdots "${servername}"
- 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"
- 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(){
- fn_check_root
- fn_check_systemdir
- fn_details_config
- fn_printdots "${servername}"
- fn_scriptlog "${servername}"
- sleep 1
- fn_check_tmux
- 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
- 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}"
- 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
- tmux kill-session -t "${servicename}"
- 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
- fi
|