3 #####################################################
4 ## SCRIPT ANTICRASH v1.1 Copyright (C) 2016 ##
5 ## LICENÇA: LGPL v3.0 ##
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
)
25 processo
="minetest --server" #"minetest --server"
27 # Comando de abertura do servidor
28 bin_args
=$
(cat "$dados_path"/bin_args
)
30 # Caminho do diretório do mundo
31 world_path
=$
(cat "$dados_path"/world_path
)
34 from_email
=$
(cat "$dados_path"/from_email
) # Endereço de origem que envia email
35 from_login
=$
(cat "$dados_path"/from_login
) # Loggin do email de origem
36 from_senha
=$
(cat "$dados_path"/from_senha
) # Senha do email de origem
37 from_smtp
=$
(cat "$dados_path"/from_smtp
) # Protocolo de SMTP do seu servidor de email
38 from_subject
=$
(cat "$dados_path"/from_subject
) # Titulo do email que será enviado
39 from_text
=$
(cat "$dados_path"/from_text
) # Texto do corpo da mensagem de email enviada
40 to_email
=$
(cat "$dados_path"/to_email
) # Endereço de destinatário que recebe email
41 # Mensagens de alerta emergencial
42 from_subject_em
=$
(cat "$dados_path"/from_subject_em
)
43 from_text_em
=$
(cat "$dados_path"/from_text_em
)
46 status_email
=$
(cat "$dados_path"/status_email
) # Se o sistema de email deve funcionar
47 status_backup
=$
(cat "$dados_path"/status_backup
) # Se o sistema de email deve funcionar
49 # AVISO de autenticidade dos dados
50 echo -e "\033[01;34m###_AVISO_#################################################\033[00;00m"
51 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)"
53 # AVISO servidor so pode ser fechado pelo gestor
54 echo -e "\033[01;34m###_AVISO_#################################################\033[00;00m"
55 echo "Uma vez iniciado o anticrash o servidor pode ser fechado apenas pelo botao de desligamento no painel administrativo do gestor"
56 echo "onn" > $dados_path/status
# anticrash trabalha
58 echo -e "\033[01;35m###########################################################\033[00;00m"
59 echo -e "\033[01;35m## ___ _ _____ ___ ___ ___ ___ v1.1 ##\033[00;00m"
60 echo -e "\033[01;35m## | | |\ | | | | | \ | | | | | ##\033[00;00m"
61 echo -e "\033[01;35m## |___| | \ | | | | |___/ |___| \___ |___| ##\033[00;00m"
62 echo -e "\033[01;35m## | | | \| | | |___ | \ | | ___| | | ##\033[00;00m"
63 echo -e "\033[01;35m###########################################################\033[00;00m"
64 echo -e "\033[01;35m## Gestor Copyright (C) 2016. ##\033[00;00m"
65 echo -e "\033[01;35m## Esse programa não tem ABSOLUTAMENTE NENHUMA GARANTIA. ##\033[00;00m"
66 echo -e "\033[01;35m###########################################################\033[00;00m"
68 # INFO Abre o servidor normalmente
69 echo -e "\033[01;32m###_INFO_##################################################\033[00;00m"
70 echo "Abrindo servidor..."
71 nohup
$bin_args >> debug.out
&
74 # INFO Inicia loopde verificação
75 echo -e "\033[01;32m###_INFO_##################################################\033[00;00m"
76 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..."
78 quedas
=0 # contador de quedas
80 # Laço de verificação infinito
81 while [ true
== true
]; do
82 if ! [ "$(pgrep -f "$processo")" ]; then # verificar processo
84 quando
="$(date '+%Y-%m-%d %H-%M-%S')"
86 # Verificar se o servidor desligou corretamente
87 if [ $
(cat "$dados_path"/status
) == off
]; then
88 echo -e "[\033[01;32m$quando\033[00;00m] Servidor foi desligado normalmente..."
89 echo "Desligando anticrash..."
93 # Servidor parou abruptamente
94 echo -e "\033[01;32m###_INFO_##################################################\033[00;00m"
95 echo -e "[\033[01;32m$quando\033[00;00m] Servidor parou abruptamente (ou de modo inconveniente)..."
97 # Soma ao contador de quedas
100 # Renomeia arquivo de depuração
101 echo "Renomenado 'debug.txt' para 'debug ($quando).txt'..."
102 mv "debug.txt" "debug ($quando).txt"
104 # Faz backup do mundo
105 if [ $status_backup == "true" ]; then
106 echo "Fazendo backup do mapa em '$world_path($quando).tar.gz'..."
107 tar -czf "$world_path($quando).tar.gz" "$world_path"
110 if [ $quedas -ge $lim_quedas ]; then
111 # AVISO Atingiu limite de quedas sucessivas
112 echo -e "\033[01;34m###_AVISO_#################################################\033[00;00m"
113 echo "Atingiu o limite de quedas sucessivas."
114 if [ $status_email == "true" ]; then
115 # Enviando relatorio para email
116 echo "Enviando relatório para '$to_email'..."
117 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 ($quando).txt"
119 # Desligando anticrash
120 echo "Desligando anticrash..."
121 echo "off" > $dados_path/status
# anticrash parou
124 if [ $status_email == "true" ]; then
125 # Enviando relatorio para email
126 echo "Enviando relatório para '$to_email'..."
127 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 ($quando).txt"
131 # Reativando servidor
132 echo "Reativando servidor de minetest ..."
133 nohup
$bin_args >> debug.out
&
136 quedas
=0 # zerar o contador de quedas apos 1 intervalo/loop sem queda