Update README.md
[gestor/gestor2.git] / gestor-anticrash-minetest.sh
blob9a90791246bc5f649a93f90ad3a6cdde2f5d771a
1 #!/bin/bash
3 #####################################################
4 ############## SCRIPT ANTICRASH v1.0 ################
5 #####################################################
6 ## LICENÇA: LGPL ##
7 #####################################################
8 ## Por ##############################################
9 ## Lunovox <lunovox@openmailbox.org> ##
10 ## BrunoMine <borgesdossantosbruno@gmail.com> ##
11 #####################################################
13 # Aviso de autenticidade dos dados
14 echo -e "[\033[01;32m$(date '+%Y-%m-%d %H:%M:%S')\033[00;00m] 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)"
16 # Caminho para dados do mod
17 dados_path="./../mods/gestor/dados"
19 # Intervalo de verificação (em segundos)
20 interval=$(cat "$dados_path"/interval)
22 # Vezes que o servidor pode cair seguidamente
23 lim_quedas=$(cat "$dados_path"/quedas)
25 # Nome do processo
26 processo="minetest --server" #"minetest --server"
28 # Comando de abertura do servidor
29 bin_args=$(cat "$dados_path"/bin_args)
31 # Caminho do binario
32 bin=$(cat "$dados_path"/bin_path)
34 # Caminho de depuração (debug.txt)
35 debug_path=$(cat "$dados_path"/debug_path)
37 # Caminho do diretório do mundo
38 world_path=$(cat "$dados_path"/world_path)
40 # Variáveis de Email
41 from_email=$(cat "$dados_path"/from_email) # Endereço de origem que envia email
42 from_login=$(cat "$dados_path"/from_login) # Loggin do email de origem
43 from_senha=$(cat "$dados_path"/from_senha) # Senha do email de origem
44 from_smtp=$(cat "$dados_path"/from_smtp) # Protocolo de SMTP do seu servidor de email
45 from_subject=$(cat "$dados_path"/from_subject) # Titulo do email que será enviado
46 from_text=$(cat "$dados_path"/from_text) # Texto do corpo da mensagem de email enviada
47 to_email=$(cat "$dados_path"/to_email) # Endereço de destinatário que recebe email
48 # Mensagens de alerta emergencial
49 from_subject_em=$(cat "$dados_path"/from_subject_em)
50 from_text_em=$(cat "$dados_path"/from_text_em)
52 # Status de Sistemas
53 status_email=$(cat "$dados_path"/status_email) # Se o sistema de email deve funcionar
54 status_backup=$(cat "$dados_path"/status_backup) # Se o sistema de email deve funcionar
56 # Verifica se ja esta aberto
57 if [ $(cat "$dados_path"/status) == on ]; then
58 echo "Falha. Servidor ja foi aberto (feche o servidor e tente novamente, ou abra e feche o servidor e tente novamente)..."
59 exit
62 echo "#######################################################"
63 echo "# ___ _ _____v1.0 ___ ___ ___ ___ #"
64 echo "# | | |\ | | | | | \ | | | | | #"
65 echo "# |___| | \ | | | | |___/ |___| \___ |___| #"
66 echo "# | | | \| | | |___ | \ | | ___| | | #"
67 echo "#######################################################"
69 echo "on" > "$dados_path"/status_anticrash # Anticrash ativado
71 # Abre o servidor normalmente
72 echo -e "[\033[01;32m$(date '+%Y-%m-%d %H:%M:%S')\033[00;00m] Abrindo servidor..."
73 echo $bin_args
74 nohup $bin_args > /dev/null &
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$(date '+%Y-%m-%d %H:%M:%S')\033[00;00m] Servidor foi desligado normalmente..."
89 echo "Desligando anticrash..."
90 break
93 echo -e "[\033[01;32m$quando\033[00;00m] Servidor parou abruptamente (ou de modo inconveniente)..."
95 # Soma ao contador de quedas
96 let quedas++
98 echo "Renomenado 'debug.txt' para 'debug ($quando).txt'..."
99 mv "$debug_path/debug.txt" "$debug_path/debug ($quando).txt" # Salvando arquivo de depuração
102 if [ $status_backup == "true" ]; then
103 echo "Fazendo backup do mapa em '$world_path($quando).tar.gz'..."
104 #7z a "$world_path ($quando).7z" "$world_path"
105 tar -czf "$world_path($quando).tar.gz" "$world_path"
108 if [ $quedas -ge $lim_quedas ]; then
109 echo "ALERTA. atingiu o limite de quedas sucessivas."
110 if [ $status_email == "true" ]; then
111 echo "Enviando relatório para '$to_email'..."
112 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"
114 echo "Desligando anticrash..."
115 echo "off" > $dados_path/status # servidor desligado
116 break
117 else
118 if [ $status_email == "true" ]; then
119 echo "Enviando relatório para '$to_email'..."
120 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"
125 echo "Reativando servidor de minetest ..."
126 nohup $bin_args > /dev/null &
128 else
129 quedas=0 # zerar o contador de quedas apos 1 intervalo/loop sem queda
132 sleep $interval
133 done