Script - Realizando relatório do servidor

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

[ Hits: 10.463 ]

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

VPN automática entre sites

Gera estatísticas de tráfego de pacotes nas interfaces de um servidor linux via SNMPv3.

PS com gráficos por processo

Status port

linkswitch (redundância de internet)


  

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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts