Script para Monitoramento
Publicado por Marcelo Donato de Lemos Rossato 10/07/2004
[ Hits: 27.190 ]
Muitas vezes, temos que disponibilizar serviços que não podem ficar fora do ar nem por alguns minutos durante o dia. Para atingir esses resultados, é necessário ter um sistema muito bem instalado e configurado e, além disso, utilizar um script que avise o administrador da rede (via e-mail) que algo não está funcionando bem e precisa ser arrumado. Foi escrito um script em PERL que verifica diversos serviços, conectividade e log de sistemas, entre eles:
1) Serviço sendmail, named, radiusd e httpd.
2) Teste de ping e traceroute.
3) Conectividade e host remoto.
4) Informações de hd e memória.
5) Últimas linhas dos log's.
Segue abaixo o código que pode ser alterado, conforme necessidade. É claro que qualquer alteração, deve manter o nome do autor e os direitos autorais do script.
Pronto!!! Depois de digitar essas linhas em um editor de texto, salve o arquivo e transforme em executável com o comando abaixo:
chmod 700 nomearquivo
Depois disso, basta colocar o arquivo no cron do usuário root para rodar de 10 em 10 minutos e receber os dados do sistema em seu e-mail.
#!/usr/bin/perl #========================================================================================= # Script para monitoramento de sistemas # Desenvolvido por Alexandre Pedroso # http://www.aplinux.com.br - aplinux@ig.com.br #========================================================================================= system("rm -rf /root/monitor.txt"); system("echo '============================================================' > /root/monitor.txt"); system("echo 'VERIFICAÇÃO DOS SISTEMAS DA EMPRESA' >> /root/monitor.txt"); system("echo '============================================================' >> /root/monitor.txt"); system("echo -n 'SERVIDOR LINUX xxx.xxx.xxx.x - ' >> /root/monitor.txt ; date >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("echo 'SERVIÇOS ATIVOS:' >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("echo -n '1) ' >> /root/monitor.txt ; /etc/init.d/sendmail status >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("echo -n '2) ' >> /root/monitor.txt ; /etc/init.d/named status >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("echo -n '3) ' >> /root/monitor.txt ; /etc/init.d/radiusd status >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("echo -n '4) ' >> /root/monitor.txt ; /etc/init.d/httpd status >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("echo 'FILA DE E-MAIL:' >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("echo -n 'Mensagens na fila: ' >> /root/monitor.txt ; mailq | wc -l >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("echo 'TESTE DE PING: ' >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("echo '1) Roteador Link - xxx.xxx.xxx.x' >> /root/monitor.txt"); system("ping -c 5 xxx.xxx.xxx.x >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("echo '2) Roteador Cisco - xxx.xxx.xxx.x' >> /root/monitor.txt"); system("ping -c 5 xxx.xxx.xxx.x >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("echo '3) Servidor Windows 2000 - xxx.xxx.xxx.x' >> /root/monitor.txt"); system("ping -c 5 xxx.xxx.xxx.x >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("echo '4) Servidor Linux - xxx.xxx.xxx.x' >> /root/monitor.txt"); system("ping -c 5 xxx.xxx.xxx.x >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("echo '5) Servidor Externo - xxx.xxx.xxx.x' >> /root/monitor.txt"); system("ping -c 5 xxx.xxx.xxx.x >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("echo '6) UOL - HOST REMOTO' >> /root/monitor.txt"); system("ping -c 5 www.uol.com.br >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("echo 'USUÁRIOS CONECTADOS:' >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("echo -n 'Total de usuários conectados: ' >> /root/monitor.txt ; radwho | wc -l >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("radwho >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("echo 'INFORMAÇÕES DO HD:' >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("df -h >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("echo 'INFORMAÇÕES DE MEMÓRIA:' >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("free >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("echo '20 ÚLTIMAS LINHAS DO LOG DO MAIL SERVER:' >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("tail -20 /var/log/maillog >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("echo '20 ÚLTIMAS LINHAS DO LOG DO RADIUS SERVER:' >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("tail -20 /var/log/radius.log >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("echo '20 ÚLTIMAS LINHAS DO LOG DO SISTEMA:' >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("tail -20 /var/log/messages >> /root/monitor.txt"); system("echo >> /root/monitor.txt"); system("echo '============================================================' >> /root/monitor.txt"); system("echo 'TESTES REALIZADOS COM SUCESSO....' >> /root/monitor.txt"); system("echo '============================================================' >> /root/monitor.txt"); $ncon==0; open (arq, "/root/monitor.txt"); @body= < arq >; close (arq); foreach $item (@body) { $ncon=$ncon+1; } $ncon=$ncon-1; if ($ncon > 5) { open(MAIL,"|/usr/sbin/sendmail -t"); print MAIL "To: seuemail\@seudominio.com.br\n"; print MAIL "cc: seuemail\@seudominio.com.br\n"; print MAIL "From: root\@seudominio.com.br\n"; print MAIL "Subject: Monitoramento dos Sistemas\n\n"; print MAIL "-" x 75 . "\n\n"; foreach $item (@body) { print MAIL $item; } print MAIL "-" x 75 . "\n\n"; close(MAIL); }
zsh: Validar IPv4 utilizando PCRE
Restaurar backup de uma conta cpanel mesmo que ela já exista
Fazendo backup de uma pasta em arquivos separados
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Wifi não funciona no Aspire ES 15 com o Debian (8)
Como atualizar o Debian 8 para o 10 (10)
Dica sobre iptables ACCEPT e DROP (6)
NGNIX - Aplicar SNAT para evitar roteamento assimetrico (29)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta