fn_stop 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #!/bin/bash
  2. # LGSM fn_stop function
  3. # Author: Daniel Gibbs
  4. # Website: http://danielgibbs.co.uk
  5. # Version: 080214
  6. # Description: Stops the server.
  7. local modulename="Stopping"
  8. fn_stop_teamspeak3(){
  9. fn_check_root
  10. fn_check_systemdir
  11. fn_printdots "${servername}"
  12. fn_scriptlog "${servername}"
  13. sleep 1
  14. fn_check_ts3status
  15. if [ "${ts3status}" = "No server running (ts3server.pid is missing)" ];then
  16. fn_printfail "${servername} is already stopped"
  17. fn_scriptlog "${servername} is already stopped"
  18. else
  19. ${filesdir}/ts3server_startscript.sh stop inifile=${ini} > /dev/null 2>&1
  20. fn_printok "${servername}"
  21. fn_scriptlog "Stopped ${servername}"
  22. fi
  23. # Remove lock file
  24. rm -f "${rootdir}/${lockselfname}"
  25. sleep 1
  26. echo -en "\n"
  27. }
  28. fn_stop_tmux(){
  29. fn_check_root
  30. fn_check_systemdir
  31. fn_details_config
  32. fn_printdots "${servername}"
  33. fn_scriptlog "${servername}"
  34. sleep 1
  35. fn_check_tmux
  36. if [ "${gamename}" == "7 Days To Die" ] ; then
  37. # if game is 7 Days To Die, we need special, graceful shutdown via telnet connection.
  38. # Set below variable to be called for expect to operate correctly..
  39. sdtdshutdown=$( expect -c '
  40. proc abort {} {
  41. puts "Timeout or EOF\n"
  42. exit 1
  43. }
  44. spawn telnet '"${telnetip}"' '"${telnetport}"'
  45. expect {
  46. "password:" { send "'"${telnetpass}"'\r" }
  47. default abort
  48. }
  49. expect {
  50. "session." { send "shutdown\r" }
  51. default abort
  52. }
  53. expect { eof }
  54. puts "Completed.\n"
  55. ')
  56. echo -en "\n ${sdtdshutdown}"
  57. fn_printok "${servername}"
  58. fn_scriptlog "Performmed graceful shutdown of ${servername}"
  59. else
  60. pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:")
  61. if [ "${pid}" == "0" ]; then
  62. fn_printfail "${servername} is already stopped"
  63. fn_scriptlog "${servername} is already stopped"
  64. else
  65. tmux kill-session -t ${servicename}
  66. fn_printok "${servername}"
  67. fn_scriptlog "Stopped ${servername}"
  68. fi
  69. fi
  70. if [ "${gamename}" == "Teamspeak 3" ]; then
  71. fn_stop_teamspeak3
  72. else
  73. fn_stop_tmux
  74. fi