fn_monitor 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #!/bin/bash
  2. # LGSM fn_monitor function
  3. # Author: Daniel Gibbs
  4. # Website: http://danielgibbs.co.uk
  5. # Version: 080214
  6. # Description: Monitors server by checking for running proccesses
  7. # then passes to fn_monitor_query.
  8. local modulename="Monitor"
  9. fn_monitor_teamspeak3(){
  10. fn_rootcheck
  11. fn_syscheck
  12. fn_logmanager
  13. fn_printfail "Monitor is checking ${servicename}: ${servername}"
  14. fn_scriptlog "Monitor is checking ${servername}"
  15. sleep 0.5
  16. fn_runcheck
  17. fn_printwarn "Monitor detected ${servername} had stopped!\n"
  18. fn_scriptlog "Monitor detected ${servername} had stopped!"
  19. sleep 1
  20. fn_status
  21. if [ "${ts3status}" = "Server seems to have died" ]; then
  22. fn_printinfo "${servername} Server seems to have died"
  23. fn_scriptlog "${servername} Server seems to have died"
  24. failurereason="Server seems to have died"
  25. elif [ "${ts3status}" = "No server running (ts3server.pid is missing)" ]; then
  26. fn_printinfo "${servername} No server running (ts3server.pid is missing)"
  27. fn_scriptlog "${servername} No server running (ts3server.pid is missing)"
  28. failurereason="No server running (ts3server.pid is missing)"
  29. else
  30. fn_printinfo "${servername} Unknown error"
  31. fn_scriptlog "${servername} Unknown error"
  32. failurereason="Unknown error"
  33. fi
  34. sleep 0.5
  35. echo -en "\n"
  36. if [ "${emailnotification}" = "on" ]; then
  37. subject="${servicename} Monitor - Restarting ${servername}"
  38. actiontaken="restarted ${servername}"
  39. fn_emailnotification
  40. fi
  41. sleep 0.5
  42. echo -en "\n"
  43. fn_restartserver
  44. }
  45. fn_monitor_tmux(){
  46. fn_check_root
  47. fn_check_systemdir
  48. fn_check_ip
  49. fn_details_config
  50. fn_printdots "${servername}"
  51. fn_scriptlog "${servername}"
  52. sleep 1
  53. if [ ! -f "${lockselfname}" ]; then
  54. fn_printinfo "Disabled: No lock file found"
  55. fn_scriptlog "Disabled: No lock file found"
  56. sleep 1
  57. echo -en "\n"
  58. echo "To enable monitor run ${selfname} start"
  59. exit
  60. fi
  61. updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l)
  62. if [ "${updatecheck}" = "0" ]; then
  63. fn_printdots "Checking session: CHECKING"
  64. fn_scriptlog "Checking session: CHECKING"
  65. sleep 1
  66. tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -E "^${servicename}:"|wc -l)
  67. if [ "${tmuxwc}" -eq 1 ]; then
  68. fn_printok "Checking session: OK"
  69. fn_scriptlog "Checking session: OK"
  70. sleep 1
  71. echo -en "\n"
  72. fn_monitor_query
  73. exit
  74. else
  75. fn_printfail "Checking session: FAIL"
  76. fn_scriptlog "Checking session: FAIL"
  77. sleep 1
  78. echo -en "\n"
  79. if [ "${emailnotification}" = "on" ]; then
  80. subject="${servicename} Monitor - Starting ${servername}"
  81. failurereason="${servicename} process not running"
  82. actiontaken="${servicename} has been restarted"
  83. fn_email
  84. fi
  85. fn_scriptlog "Monitor is starting ${servername}"
  86. fn_start
  87. fi
  88. else
  89. fn_printinfonl "SteamCMD is currently checking for updates"
  90. fn_scriptlog "SteamCMD is currently checking for updates"
  91. sleep 1
  92. fn_printinfonl "When update is complete ${servicename} will start"
  93. fn_scriptlog "When update is complete ${servicename} will start"
  94. sleep 1
  95. fi
  96. }
  97. if [ "${gamename}" == "Teamspeak 3" ]; then
  98. fn_monitor_teamspeak3
  99. else
  100. fn_monitor_tmux
  101. fi