Script - Realizando relatório do servidor
Publicado por Leandro da S. Barbosa 26/03/2005
[ Hits: 10.647 ]
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...
#!/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/*
Usando netstat para verificar conexões e portas
Limitando largura de banda com o CBQ
Plugin do Nagios para checar disco via SNMP
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (6)