Apresentação
Este é meu primeiro artigo compartilhado no VOL, então, não sei muito bem o que colocar para começar e por isso, vou direto ao assunto.Estava a procura de algo para avisar se algum servidor perdesse rede, ou algo assim, que fizesse o mesmo parar de responder na rede, então, pesquisei sobre scripts para avisar por e-mail sobre estes eventos.
Encontrei bastante conteúdo na Internet, mas logo veio uma duvida: e se o próprio servidor que está a executar o script estiver sem rede, ou se o servidor de e-mail perder a rede, e se a internet não estiver funcionando? Então, resolvi enviar estas mesmas mensagens por SMS. Fui à cata de conteúdo. Encontrei também alguma coisa na Net (mas até que não muito), então juntei tudo e desenvolvi minha ideia. Claro que não é 100%. Vai que o servidor que está executando o script desligue. Mas, já é uma alternativa bem legal. O que utilizei para colocar em funcionamento: Hardware:
Software:
InstalaçãoMão na massa. Obs.: todos comandos aqui listado foram executados como root. Instalação do SendEmail para enviar os e-mails: # apt-get install sendemail libnet-ssleay-perl libio-socket-ssl-perl Instalação do Gammu, para enviar SMS: # sudo apt-get install gammu Pronto, tudo instalado. Agora, é só plugar o modem 3G em alguma USB, e listar as portas criadas para o mesmo.: # ls /dev/tty* Mostrará uma lista de tty. A que vamos usar neste caso, é a “ttyUSB0” ou “ttyUSB1”. Executaremos com uma para testar, se não funcionar, testaremos com a outra. Configuramos o Gammu: # gammu-config Pressione Enter para editar e colocar a porta criada para o modem: Enter, para Aceitar: Clique em “Save” para salvar: Pressione Enter para aceitar e criar o arquivo mencionado na tela, que contém a configuração do Gammu. Vamos testar se o modem foi encontrado na porta mencionada: # gammu –identify Deverá aparecer algo como esta tela: Se isso aparecer, está tudo OK. Se não aparecer, execute novamente o comando gammu-config e mude para a porta “/dev/ttyUSB1” e teste novamente. TesteTestando se está enviando SMS e enviando e-mail. Para testar envio do SMS: # echo teste | gammu –sendsms TEXT NumeroParaQuemVaiOsms E receberá o SMS com a palavra: “teste” Para testar o envio de e-mail: # sendEmail -f EMAIL_DE -t EMAIL_PARA -u “ASSUNTO” -o “MENSAGEM” -s SERVIDOR_SMTP -xu EMAIL_DE -xp SENHA E receberá o e-mail com o assunto e a mensagem colocada no comando acima. |
|
Funcionamento
Colocando para funcionar definitivamente.Vou mostrar exatamente como fiz no meu caso, sintam-se à vontade para modificar as instruções.
# cd / Salve o script abaixo como “monitor.sh”: #!/bin/bash
############CONFIGURACAO local=/monitor log=$local/logs/”LOG-`date +%d%m%y`.txt” numero=5498979897 EMAIL_DE=”@gmail.com” EMAIL_PARA=”@outlook.com” EMAIL_PARA2=”” SERVIDOR_SMTP=”smtp.gmail.com:587″ SENHA=’senha’ ######################### echo “—————————————” >> $log for i in $( cat $local/servidores.txt) do ping -c 1 -W 3 “$i” > /dev/null # -c para 1 ping e -W para 1 segundo de espera por ping if [ “$?” -ne 1 ];then # RECONECTADO if [ -e $local/$i-OFF.txt ]; then printf “%13s – %12s – %6s\n” $i RECONECTADO `date +%H:%M:%S` >> $log if [ $(cat $local/$i-OFF.txt) -ge 3 ]; then # ENVIA EMAIL ASSUNTO=”SERVIDOR RECONECTADO – $i” MENSAGEM=”Servidor $i reconectado – `date +%H:%M:%S`” ANEXO=”” sendEmail -f $EMAIL_DE -t $EMAIL_PARA -bcc $EMAIL_PARA2 -u “$ASSUNTO” -m “$MENSAGEM” -a $ANEXO -s $SERVIDOR_SMTP -xu $EMAIL_DE -xp $SENHA > $local/log_email.txt # ENVIA SMS echo “$MENSAGEM” | gammu –sendsms TEXT $numero > $local/log_sms.txt fi rm $local/$i-OFF.txt else # CONECTADO printf “%13s – %12s – %6s\n” $i CONECTADO `date +%H:%M:%S` >> $log fielse # DESCONETADO printf “%13s – %6s – %6s\n” $i DESCONECTADO `date +%H:%M:%S` >> $log if [ -e $local/$i-OFF.txt ]; then cont=$(cat $local/$i-OFF.txt) && soma=$(($cont + 1)) && echo “$soma” > $local/$i-OFF.txt else echo “1” > $local/$i-OFF.txt fi if [ $(cat $local/$i-OFF.txt) -eq 3 ]; then # PERDEU 3 PINGS ENVIA EMAIL ASSUNTO=”PERDA DE REDE – $i” MENSAGEM=”Servidor $i sem resposta – Primeiro Alerta – `date +%H:%M:%S`” ANEXO=”” sendEmail -f $EMAIL_DE -t $EMAIL_PARA -bcc $EMAIL_PARA2 -u “$ASSUNTO” -m “$MENSAGEM” -a $ANEXO -s $SERVIDOR_SMTP -xu $EMAIL_DE -xp $SENHA > $local/log_email.txt # ENVIA SMS echo “$MENSAGEM” | gammu –sendsms TEXT $numero > $local/log_sms.txt #rm $local/$i-OFF.txt elif [ $(cat $local/$i-OFF.txt) -eq 34 ]; then # PERDEU + de 4 PINGS ENVIA EMAIL ASSUNTO=”PERDA DE REDE – $i” MENSAGEM=”Servidor $i sem resposta – Alerta Continuo – `date +%H:%M:%S`” ANEXO=”” sendEmail -f $EMAIL_DE -t $EMAIL_PARA -bcc $EMAIL_PARA2 -u “$ASSUNTO” -m “$MENSAGEM” -a $ANEXO -s $SERVIDOR_SMTP -xu $EMAIL_DE -xp $SENHA > $local/log_email.txt # ENVIA SMS echo “$MENSAGEM” | gammu –sendsms TEXT $numero > $local/log_sms.txt echo “4” > $local/$i-OFF.txt fi fi done echo “—————————————” >> $log 1. Colocaremos o script “monitor.sh” dentro do diretório “/monitor”. E para finalizar, colocaremos o script para ser executado a cada 1 minuto. # crontab -e * * * * * /monitor/monitor.sh
|