Alertar caso servidores caiam!
Autor: Felipe 'chronos' Prenholato | Publicado: 2006-06-21T16:05:00-03:00

Ai em baixo meu script pingping. Ele vai alertar os emails quando algum servidor parar. Leia ele :).&nbsp;1&nbsp;#!/bin/sh&nbsp;2&nbsp;#&nbsp;Este&nbsp;script&nbsp;pinga&nbsp;servidores&nbsp;na&nbsp;lista&nbsp;da&nbsp;variavel&nbsp;SERVIDORES&nbsp;e&nbsp;envia&nbsp;3&nbsp;#&nbsp;emails&nbsp;para&nbsp;os&nbsp;emails&nbsp;da&nbsp;lista&nbsp;da&nbsp;variavel&nbsp;LISTA_EMAILS&nbsp;alertando&nbsp;caso&nbsp;4&nbsp;#&nbsp;eles&nbsp;caiam.&nbsp;O&nbsp;script&nbsp;só&nbsp;alerta&nbsp;se&nbsp;na&nbsp;última&nbsp;vez&nbsp;que&nbsp;ele&nbsp;testou&nbsp;o&nbsp;5&nbsp;#&nbsp;servidor&nbsp;estiver&nbsp;em&nbsp;pé&nbsp;ou&nbsp;se&nbsp;o&nbsp;servidor&nbsp;não&nbsp;foi&nbsp;testado&nbsp;ainda.&nbsp;6&nbsp;#&nbsp;7&nbsp;#&nbsp;Autor:&nbsp;Felipe&nbsp;Rafael&nbsp;Prenholato&nbsp;&lt;chronos@gentoobr.org&gt;&nbsp;8&nbsp;#&nbsp;IRC:&nbsp;nick&nbsp;chronos&nbsp;in&nbsp;#gentoo-br&nbsp;or&nbsp;#sancalivre&nbsp;at&nbsp;irc.freenode.net&nbsp;9&nbsp;#&nbsp;Data:&nbsp;21&nbsp;de&nbsp;Junho&nbsp;de&nbsp;2006.10&nbsp;#11&nbsp;#&nbsp;Este&nbsp;script&nbsp;está&nbsp;coberto&nbsp;sobre&nbsp;a&nbsp;licença&nbsp;GPLv2&nbsp;e&nbsp;disponível&nbsp;via12&nbsp;#&nbsp;pedido&nbsp;por&nbsp;e-mail.&nbsp;Qualquer&nbsp;alteração&nbsp;por&nbsp;favor&nbsp;envie&nbsp;para&nbsp;o&nbsp;criador13&nbsp;#&nbsp;do&nbsp;script.14&nbsp;15&nbsp;16&nbsp;#&nbsp;Variavel&nbsp;SERVIDORES:&nbsp;lista&nbsp;de&nbsp;servidores&nbsp;separados&nbsp;por&nbsp;espaço.17&nbsp;#&nbsp;Se&nbsp;colocar&nbsp;nomes&nbsp;em&nbsp;vez&nbsp;de&nbsp;IPs&nbsp;certifique-se&nbsp;de&nbsp;que&nbsp;o&nbsp;servidor&nbsp;em&nbsp;que&nbsp;o&nbsp;script18&nbsp;#&nbsp;rodar&nbsp;resolva&nbsp;o&nbsp;ip.19&nbsp;SERVIDORES=&quot;chicobento&nbsp;portalabipti&quot;20&nbsp;21&nbsp;#&nbsp;Variavel&nbsp;LISTA_EMAILS:&nbsp;lista&nbsp;de&nbsp;emails&nbsp;separados&nbsp;por&nbsp;espaço22&nbsp;LISTA_EMAILS=&quot;felipe.prenholato@mzo.com.br&nbsp;patrick@mzo.com.br&nbsp;paulo@mzo.com.br&nbsp;deivid@mzo.com.br&nbsp;felipe@nemo.intranet.mzo.com.br&quot;23&nbsp;#LISTA_EMAILS=&quot;chronos@gentoobr.org&nbsp;felipe@nemo.intranet.mzo.com.br&nbsp;felipe.prenholato@mzo.com.br&quot;24&nbsp;25&nbsp;#&nbsp;Formato&nbsp;da&nbsp;data&nbsp;a&nbsp;ser&nbsp;enviada&nbsp;no&nbsp;e-mail.26&nbsp;data=$(date&nbsp;+&quot;%T&nbsp;de&nbsp;%d/%m/%Y&quot;)27&nbsp;28&nbsp;#&nbsp;função&nbsp;que&nbsp;pinga&nbsp;o&nbsp;servidor&nbsp;e&nbsp;envia&nbsp;email.29&nbsp;ping_server()&nbsp;{30&nbsp;31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;variaveis&nbsp;locais&nbsp;usadas32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local&nbsp;pingreturn33&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local&nbsp;serversts34&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local&nbsp;TMPFILE35&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local&nbsp;server36&nbsp;37&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server=$138&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TMPFILE=&quot;/tmp/ping_$server.tmp&quot;39&nbsp;40&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Debug41&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#echo&nbsp;&quot;Servidor:&nbsp;$server&quot;42&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#echo&nbsp;&quot;Arquivo&nbsp;temporario:&nbsp;$TMPFILE&quot;43&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;44&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;pinga&nbsp;servidor&nbsp;e&nbsp;pega&nbsp;retorno.45&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ping&nbsp;-c3&nbsp;$server&nbsp;&amp;&gt;/dev/null;46&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pingreturn=$?;47&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;48&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Debug49&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#echo&nbsp;&quot;Ping&nbsp;retornou&nbsp;$pingreturn&nbsp;para&nbsp;$server&quot;50&nbsp;51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Se&nbsp;pingreturn&nbsp;for&nbsp;0&nbsp;o&nbsp;servidor&nbsp;está&nbsp;de&nbsp;pé.52&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;[&nbsp;&quot;$pingreturn&quot;&nbsp;==&nbsp;&quot;0&quot;&nbsp;]53&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;then54&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;&quot;1&quot;&nbsp;&gt;&nbsp;$TMPFILE55&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi56&nbsp;57&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Se&nbsp;pingreturn&nbsp;for&nbsp;1&nbsp;o&nbsp;servidor&nbsp;não&nbsp;foi&nbsp;pingado.58&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;[&nbsp;&quot;$pingreturn&quot;&nbsp;==&nbsp;&quot;1&quot;&nbsp;]59&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;then60&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;61&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Se&nbsp;$TMPFILE&nbsp;não&nbsp;existir&nbsp;cria&nbsp;ele.62&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;!&nbsp;[&nbsp;-e&nbsp;$TMPFILE&nbsp;]63&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;then64&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Debug65&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#echo&nbsp;&quot;$TMPFILE&nbsp;não&nbsp;existe,&nbsp;criando&nbsp;com&nbsp;valor&nbsp;1.&quot;66&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;&quot;1&quot;&nbsp;&gt;&nbsp;$TMPFILE67&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi68&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;69&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;pega&nbsp;status&nbsp;do&nbsp;servidor,&nbsp;1&nbsp;é&nbsp;pingado,&nbsp;0&nbsp;é&nbsp;não&nbsp;pingado.70&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serversts=$(cat&nbsp;$TMPFILE)71&nbsp;72&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Debug73&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#echo&nbsp;&quot;Valor&nbsp;de&nbsp;$TMPFILE:&nbsp;$serversts&quot;74&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;75&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;se&nbsp;ele&nbsp;estava&nbsp;de&nbsp;pé&nbsp;(valor&nbsp;1)&nbsp;caiu&nbsp;agora,&nbsp;grava&nbsp;valor&nbsp;0&nbsp;em76&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;$TMPFILE&nbsp;e&nbsp;manda&nbsp;email.77&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;[&nbsp;&quot;$serversts&quot;&nbsp;==&nbsp;&quot;1&quot;&nbsp;]78&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;then79&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;80&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;&quot;0&quot;&nbsp;&gt;&nbsp;$TMPFILE81&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg=&quot;Servidor&nbsp;$server&nbsp;fora&nbsp;do&nbsp;ar&nbsp;em&nbsp;$data.&nbsp;Contatar&nbsp;responsavéis.&quot;82&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ass=&quot;Servidor&nbsp;$server&nbsp;fora&nbsp;do&nbsp;ar.&quot;83&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LC_ALL=&quot;en_US.ISO-8859-1&quot;&nbsp;echo&nbsp;&quot;$msg&quot;&nbsp;|&nbsp;mail&nbsp;-s&nbsp;&quot;$ass&quot;&nbsp;$LISTA_EMAILS84&nbsp;85&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi86&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;87&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi88&nbsp;89&nbsp;}90&nbsp;91&nbsp;#&nbsp;roda&nbsp;ping_server&nbsp;para&nbsp;cada&nbsp;servidor.92&nbsp;for&nbsp;e&nbsp;in&nbsp;$(echo&nbsp;$SERVIDORES);93&nbsp;do94&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ping_server&nbsp;$e;95&nbsp;doneEle precisa ser instalado em um servidor que possa pingar os demais e enviar emails. Versões antigas do postfix não vão funcionar, tem q suportar a opção -a no comando mail, seu uso é:./scriptcoloque no cron e fique de boa ;-)