fn_stop 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. fn_printdots "Attempting graceful shutdown via telnet"
  40. fn_scriptlog "Attempting graceful shutdown via telnet"
  41. sleep 1
  42. telnetip=127.0.0.1
  43. sdtdshutdown=$( expect -c '
  44. proc abort {} {
  45. puts "Timeout or EOF\n"
  46. exit 1
  47. }
  48. spawn telnet '"${telnetip}"' '"${telnetport}"'
  49. expect {
  50. "password:" { send "'"${telnetpass}"'\r" }
  51. default abort
  52. }
  53. expect {
  54. "session." { send "shutdown\r" }
  55. default abort
  56. }
  57. expect { eof }
  58. puts "Completed.\n"
  59. ')
  60. echo -en "\n ${sdtdshutdown}"
  61. fn_printok "Attempting graceful shutdown via telnet"
  62. fn_scriptlog "Attempting graceful shutdown succeeded"
  63. sleep 1
  64. fn_printdots "${servername}"
  65. fn_scriptlog "${servername}"
  66. sleep 1
  67. fi
  68. pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:")
  69. if [ "${pid}" == "0" ]; then
  70. fn_printfail "${servername} is already stopped"
  71. fn_scriptlog "${servername} is already stopped"
  72. else
  73. tmux kill-session -t ${servicename}
  74. fn_printok "${servername}"
  75. fn_scriptlog "Stopped ${servername}"
  76. fi
  77. }
  78. if [ "${gamename}" == "Teamspeak 3" ]; then
  79. fn_stop_teamspeak3
  80. else
  81. fn_stop_tmux
  82. fi