Troca de status no desligamento removida
[gestor/gestor2.git] / gestor-anticrash-minetest.sh
blob548f62addad744e1a3375bddba35a8bacf8ed01c
1 #!/bin/bash
3 #####################################################
4 ## SCRIPT ANTICRASH v1.0 Copyright (C) 2016 ##
5 ## LICENÇA: LGPL v3.0 ##
6 ## Por ##
7 ## Lunovox <lunovox@openmailbox.org> ##
8 ## BrunoMine <borgesdossantosbruno@gmail.com> ##
9 #####################################################
10 ## Recebeste uma cópia da GNU Lesser General ##
11 ## Public License junto com esse software. ##
12 ## Se não, veja em <http://www.gnu.org/licenses/>. ##
13 #####################################################
15 # Caminho para dados do mod
16 dados_path="./../mods/gestor/dados"
18 # Intervalo de verificação (em segundos)
19 interval=$(cat "$dados_path"/interval)
21 # Vezes que o servidor pode cair seguidamente
22 lim_quedas=$(cat "$dados_path"/quedas)
24 # Nome do processo
25 processo="minetest --server" #"minetest --server"
27 # Comando de abertura do servidor
28 bin_args=$(cat "$dados_path"/bin_args)
30 # Caminho do binario
31 bin=$(cat "$dados_path"/bin_path)
33 # Caminho de depuração (debug.txt)
34 debug_path=$(cat "$dados_path"/debug_path)
36 # Caminho do diretório do mundo
37 world_path=$(cat "$dados_path"/world_path)
39 # Variáveis de Email
40 from_email=$(cat "$dados_path"/from_email) # Endereço de origem que envia email
41 from_login=$(cat "$dados_path"/from_login) # Loggin do email de origem
42 from_senha=$(cat "$dados_path"/from_senha) # Senha do email de origem
43 from_smtp=$(cat "$dados_path"/from_smtp) # Protocolo de SMTP do seu servidor de email
44 from_subject=$(cat "$dados_path"/from_subject) # Titulo do email que será enviado
45 from_text=$(cat "$dados_path"/from_text) # Texto do corpo da mensagem de email enviada
46 to_email=$(cat "$dados_path"/to_email) # Endereço de destinatário que recebe email
47 # Mensagens de alerta emergencial
48 from_subject_em=$(cat "$dados_path"/from_subject_em)
49 from_text_em=$(cat "$dados_path"/from_text_em)
51 # Status de Sistemas
52 status_email=$(cat "$dados_path"/status_email) # Se o sistema de email deve funcionar
53 status_backup=$(cat "$dados_path"/status_backup) # Se o sistema de email deve funcionar
55 # AVISO de autenticidade dos dados
56 echo -e "\033[01;34m###_AVISO_#################################################\033[00;00m"
57 echo "Para evitar erros nesse anticrash, abra e feche o servidor (no mundo desejado) normalmente uma vez para atualizar dados (para o caso de troca de diretorios e/ou nomes)"
59 # Verifica se ja esta aberto
60 if [ $(cat "$dados_path"/status) == on ]; then
61 echo -e "\033[01;31m###_ERRO_##################################################\033[00;00m"
62 echo "Servidor ja foi aberto (feche o servidor e tente novamente, ou abra e feche o servidor e tente novamente)..."
63 exit
66 echo -e "\033[01;35m###########################################################\033[00;00m"
67 echo -e "\033[01;35m## ___ _ _____ ___ ___ ___ ___ v1.0 ##\033[00;00m"
68 echo -e "\033[01;35m## | | |\ | | | | | \ | | | | | ##\033[00;00m"
69 echo -e "\033[01;35m## |___| | \ | | | | |___/ |___| \___ |___| ##\033[00;00m"
70 echo -e "\033[01;35m## | | | \| | | |___ | \ | | ___| | | ##\033[00;00m"
71 echo -e "\033[01;35m###########################################################\033[00;00m"
72 echo -e "\033[01;35m## Gestor Copyright (C) 2016. ##\033[00;00m"
73 echo -e "\033[01;35m## Esse programa não tem ABSOLUTAMENTE NENHUMA GARANTIA. ##\033[00;00m"
74 echo -e "\033[01;35m###########################################################\033[00;00m"
76 # INFO Abre o servidor normalmente
77 echo -e "\033[01;32m###_INFO_##################################################\033[00;00m"
78 echo "Abrindo servidor..."
79 nohup $bin_args > /dev/null &
82 # INFO Inicia loopde verificação
83 echo -e "\033[01;32m###_INFO_##################################################\033[00;00m"
84 echo -e "[\033[01;32m$(date '+%Y-%m-%d %H:%M:%S')\033[00;00m] Iniciando verificação de processo '$processo' a cada $interval segundos..."
86 quedas=0 # contador de quedas
88 # Laço de verificação infinito
89 while [ true == true ]; do
90 if ! [ "$(pgrep -f "$processo")" ]; then # verificar processo
92 quando="$(date '+%Y-%m-%d %H-%M-%S')"
94 # Verificar se o servidor desligou corretamente
95 if [ $(cat "$dados_path"/status) == off ]; then
96 echo -e "[\033[01;32m$quando\033[00;00m] Servidor foi desligado normalmente..."
97 echo "Desligando anticrash..."
98 break
101 # Servidor parou abruptamente
102 echo -e "\033[01;32m###_INFO_##################################################\033[00;00m"
103 echo -e "[\033[01;32m$quando\033[00;00m] Servidor parou abruptamente (ou de modo inconveniente)..."
105 # Soma ao contador de quedas
106 let quedas++
108 # Renomeia arquivo de depuração
109 echo "Renomenado 'debug.txt' para 'debug ($quando).txt'..."
110 mv "$debug_path/debug.txt" "$debug_path/debug ($quando).txt"
112 # Faz backup do mundo
113 if [ $status_backup == "true" ]; then
114 echo "Fazendo backup do mapa em '$world_path($quando).tar.gz'..."
115 tar -czf "$world_path($quando).tar.gz" "$world_path"
118 if [ $quedas -ge $lim_quedas ]; then
119 # AVISO Atingiu limite de quedas sucessivas
120 echo -e "\033[01;34m###_AVISO_#################################################\033[00;00m"
121 echo "Atingiu o limite de quedas sucessivas."
122 if [ $status_email == "true" ]; then
123 # Enviando relatorio para email
124 echo "Enviando relatório para '$to_email'..."
125 sendemail -s "$from_smtp" -xu "$from_login" -xp "$from_senha" -f "$from_email" -t "$to_email" -u "$from_subject_em" -m "$from_text_em" -o message-charset=UTF-8 -a "$debug_path/debug ($quando).txt"
127 # Desligando anticrash
128 echo "Desligando anticrash..."
129 echo "off" > $dados_path/status # servidor desligou
130 break
131 else
132 if [ $status_email == "true" ]; then
133 # Enviando relatorio para email
134 echo "Enviando relatório para '$to_email'..."
135 sendemail -s "$from_smtp" -xu "$from_login" -xp "$from_senha" -f "$from_email" -t "$to_email" -u "$from_subject" -m "$from_text" -o message-charset=UTF-8 -a "$debug_path/debug ($quando).txt"
139 # Reativando servidor
140 echo "Reativando servidor de minetest ..."
141 nohup $bin_args > /dev/null &
143 else
144 quedas=0 # zerar o contador de quedas apos 1 intervalo/loop sem queda
147 sleep $interval
148 done