Pular para o conteúdo

Script - Realizando relatório do servidor

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...
Leandro da S. Barbosa leows
Hits: 11.122 Categoria: Shell Script Subcategoria: Avançado
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

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...
Download status.sh Enviar nova versão

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/*

Backup para CD-R/RW e DVD+/- R/RW

Listando usuários em um grupo

Meu firewall

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

Popular Mysql

#1 Comentário enviado por removido 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

Entre na sua conta para comentar.