Script - Realizando relatório do servidor

Publicado por Leandro da S. Barbosa 26/03/2005

[ Hits: 8.576 ]

Download status.sh




Script tem como objetivo realizar um relatório agendado pela crontab o resultado é enviado no e-mail do administrador e o log em um servidor de ftp.
O relatório reporta:
1 -  Versão realazada da distro, Hostname, Kernel
2 - Espaço em disco
3 - Memória Livre
4 - Usuários Logados
5 - 30 ultimas linhas dos Logs do secure, messages
6 - Lista de Processos
7 - Regras do Firewall iptables
8 - Portas TCP abertas e UDP
9 - Conexões estabelecidas
10 - Últimos usuários logados do sistema
11 - etc...

  



Esconder código-fonte

#!/bin/bash

# Criado por Leandro da S. Barbosa (lbarbosa@dba.com.br)
# DBA Engenharia de Sistemas


# pasta de logs
pastalog=/var/log
pastabackup=/backup/monitor

# numeros de linhas de saída output
buffern=10

# email do solicitante para monitoramento
email=lbarbosa@dba.com.br

# servidor de ftp que irá gravar os backups
ftpserver=7.0.7.103
username=backup
password=backuppwd
pastaftp=/leo/monitor

# verificando se a pasta de log existe
if [ ! -d $pastalog ]; then
        mkdir -p $pastalog
fi

# verificando se a pasta backup existe
if [ -d $pastabackup ]; then
        cd $pastabackup
else
        mkdir -p $pastabackup
        cd $pastabackup
fi

# definindo nomes de arquivos backup e de log
LOGFILE="monitor-log-$(/bin/date +%d-%m-%Y--%H-%M-%S).log"
touch $LOGFILE
echo "($(/bin/date +%d/%m/%Y-%H:%M:%S)) - Iniciando Relatório pelo usuário `whoami`" >> $LOGFILE
echo " " >> $LOGFILE
echo " LOGFILE: $LOGFILE" >> $LOGFILE
echo " Email(s): $email" >> $LOGFILE
echo " " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "- Informações                                                                                    " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "Kernel: `uname -a` " >> $LOGFILE
echo "Distro: `cat /etc/redhat-release` " >> $LOGFILE
echo "Hostname: `hostname` " >> $LOGFILE
echo " " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "- Espaço em Disco                                                                               " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "`df -h` " >> $LOGFILE
echo " " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "- Memória Livre   Unidade: MB                                                                   " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "`free -m` " >> $LOGFILE
echo " " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "- Usuários Logado no S.O.                                                                       " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "`who` " >> $LOGFILE
echo " " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "-  Log Secure.log   Ultimas linhas                                                 " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "`tail -n 30 $pastalog/secure` " >> $LOGFILE
echo " " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "- Log Messages.log   Ultimas linhas                                                         " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "`tail -n 30 $pastalog/messages` " >> $LOGFILE
echo " " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "- Listando Processos                                                                       " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "`ps -aux` " >> $LOGFILE
echo " " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "- Listando Regras do Firewall                                                              " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "`iptables -L` " >> $LOGFILE
echo "`iptables -t nat -L` " >> $LOGFILE
echo " " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "- Listando Portas TCP abertas                                                              " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "`netstat -nat|grep LISTEN` " >> $LOGFILE
echo " " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "- Listando Portas UDP abertas                                                              " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "`netstat -nau` " >> $LOGFILE
echo " " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "- Listando Conexões Estabelecidas                                                          " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "`netstat -at | grep ESTABLISHED` " >> $LOGFILE
echo " " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "- Ultimos Usuários Logados na BASH                                                         " >> $LOGFILE
echo "------------------------------------------------------------------------------------------------ " >> $LOGFILE
echo "`last` " >> $LOGFILE
echo " " >> $LOGFILE
echo " " >> $LOGFILE
echo "############# CRONTAB List "
echo "`crontab -l`" >> $LOGFILE
echo " " >> $LOGFILE



# enviando email ao solicitante sobre o status

cat $pastabackup/$LOGFILE | mail $email -s "Monitoramento Máquina `hostname` - Data/Hora $(/bin/date +%d/%m/%Y) às $(/bin/date +%H:%M:%S)"

# limpando os arquivos de log
for i in `find $pastalog/*`; do
       if [ -f $i ]; then
                echo > $i
       fi
done

rm -rf $pastalog/*.?

lista=`ls -1 $pastabackup/* | grep -v $LOGFILE`
for s in $lista; do
        rm -f $s
done

# enviando arquivo
ftp -ni $ftpserver <<FIM > /dev/null
user $username $password
lcd $pastabackup
passive
cd $pastaftp
binary
put $LOGFILE
bye
FIM


rm -rf /backup/monitor/*

Scripts recomendados

PS com gráficos por processo

Backup Incremental - tar

tuiteroPreguicoso1.0 - automatiza o envio de mensagens ao Twitter

Otimiza.sh - Atualiza seu Ubuntu/Debian

LeTRA - cálculo de valores do arquivo de venda do PDV


  

Comentários
[1] Comentário enviado por joabes em 26/11/2005 - 16:07h

Caro amigo, achei muito bom seu script, porem quando mando executar ele retorna essa linha:

ftp: bind: Address already in use

O que quer dizer esse retorno, tem que mudar algo ainda no script.

Grato.
Aguardo retorno.

[2] Comentário enviado por leows em 22/03/2006 - 14:08h

tente tirar o comando passive na parte de ftp.

[3] Comentário enviado por washluis em 29/03/2006 - 01:11h

parceiro estou me adaptando com o sistema, mais achei muito bom seu script

como faço para exe por exemplo: onde salvar assim... /etc/init.d/...
como fazer?

poderia mandar a resposta por e-mail

washluis@hotmail.com

valew rei

[4] Comentário enviado por leows em 29/03/2006 - 10:31h

o certo é salvar na cron para todo dia rodar o relatório segue o comando, executar como user root:
crontab -e
adicionar a linha abaixo:
0 17 * * * /root/status.sh
salve o arquivo com os comandos :x! ou :wq
Obs.: todo dia às 17:00 da tarde o relatório vai ser gerado na máquina.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts