Skip to content

Instantly share code, notes, and snippets.

@richardsonlima
Last active March 11, 2016 15:10
Show Gist options
  • Save richardsonlima/86f783b7dd7cb1044480 to your computer and use it in GitHub Desktop.
Save richardsonlima/86f783b7dd7cb1044480 to your computer and use it in GitHub Desktop.
LinuxCollector.sh
#!/bin/bash
# Program information
name="LinuxCollector"
version="3.0.0"
releasedate="25 November 2015"
author="Richardson Lima, "
author_contact="contato@richardsonlima.com.br"
website="http://www.richardsonlima.com.br"
copyright="Copyright 2014-2015 - ${author}, ${website}"
# Network interface for the IP address
iface="eth0"
# network interface for traffic monitoring (RX/TX bytes)
iface2="eth0"
function geral(){
echo
echo -e "\033[1;34m [*] Checando informações gerais do sistema \033[m";
echo -e "\033[1;32m [+] Sistema Operacional: \033[m" $(python -c 'import platform; print platform.system()' )
echo -e "\033[1;32m [+] Nome do host: \033[m" $(python -c 'import socket; print socket.gethostname()' )
echo -e "\033[1;32m [+] Distribuição: \033[m" $(python -c 'import platform; print platform.dist()' )
echo -e "\033[1;32m [+] Versão/Kernel: \033[m" $(python -c 'import platform; print platform.release()' )
echo -e "\033[1;32m [+] Arquitetura: \033[m" $(python -c 'import platform; print platform.machine()' )
#echo -e "\033[1;32m [+] Server ID: \033[m"; sudo dmidecode -s system-uuid
echo -e "\033[1;32m [+] Identificador do servidor: \033[m" $(python -c 'import os; os.system("sudo dmidecode -s system-uuid")')
echo
}
function checagemBasica(){
echo -e "\033[1;34m [*] Evidência do horário da checagem: \033[m";
date|awk '{print "\033[1;32m" " [+] Dia:" "\033[0m", $3, "\033[1;32m" "Mês:" "\033[0m", $2, "\033[1;32m" "Ano:" "\033[0m", $6, "\033[1;32m" "Hora:" "\033[0m", $4, "\033[1;32m" "Local:" "\033[0m", $5}'
echo
function checagemUsuarios(){
echo -e "\033[1;34m [*] Verificando usuários padrão: \033[m";
echo -e "\033[1;32m [+] Checando usuário usuario01: \033[m";if [ -z "$(sudo grep -r "usuario01" /etc/passwd)" ]
then
echo -e "\033[1;31m Usuário usuario01 não existe neste servidor ...\033[m";
echo
else
echo -e "\033[1;36m Usuário usuario01 existe neste servidor ...\033[m";
echo
fi
echo -e "\033[1;32m [+] Checando usuário usuario02: \033[m";if [ -z "$(sudo grep -r "usuario02" /etc/passwd)" ]
then
echo -e "\033[1;31m Usuário usuario02 não existe neste servidor ...\033[m";
echo
else
echo -e "\033[1;36m Usuário usuario02 existe neste servidor ...\033[m";
echo
fi
}
echo -e "\033[1;34m [*] Verificando uptime: \033[m";
uptime|awk '{print "\033[1;32m" " [+] Quantidade de dias:" "\033[0m", $3}'
echo
echo -e "\033[1;34m [*] Verificando Usuários logados: \033[m";
uptime|awk '{print "\033[1;32m" " [+] Quantidade de usuários:" "\033[0m", $6}'
echo
#echo -e "\033[1;32m [+] Quem são os usuários: \033[m"; w -h
#echo
#echo -e "\033[1;32m [+] Ultimos usuários que logaram: \033[m"; last -w -F -n 5
echo -e "\033[1;32m [+] Ultimos usuários que logaram: \033[m"; sudo lastlog -b 0 -t 100
echo
}
function checagemLoad(){
echo -e "\033[1;34m [*] Verificando Carga: \033[m";
uptime|awk '{print "\033[1;32m" " [+] Média de carga do sistema [1,5,15 minutos] :" "\033[0m", $10 $11 $12 }'
}
function checagemMemoria(){
echo
echo -e "\033[1;34m [*] Verificando situação de memória RAM: \033[m";
free -t -m|grep "Total" | awk '{ print "\033[1;32m" " [+] Total :" "\033[0m", $2 , "\033[1;32m" "Usado:" "\033[0m", $3, "\033[1;32m" "Livre:" "\033[0m", $4 }'
echo -e "\033[1;32m [+] Verificando TOP 5 em uso de memória RAM: \033[m";
ps axo pid,args,pmem,rss,vsz --sort -pmem,-rss,-vsz | head -n 5
}
function checagemSwap(){
echo
echo -e "\033[1;34m [*] Verificando situação de Swap: \033[m";
free -t -m|grep "Swap" | awk '{ print "\033[1;32m" " [+] Total :" "\033[0m", $2 , "\033[1;32m" "Usado:" "\033[0m", $3, "\033[1;32m" "Livre:" "\033[0m", $4 }'
echo
}
function checagemCPU(){
echo
echo -e "\033[1;34m [*] Verificando uso CPU: \033[m";
top -b -n 1 | sed -ne '/Cpu/ s/.* \([0-9]*\.[0-9]*\)%us.* \([0-9]*\.[0-9]*\)%sy.*/ [+] User: \1%, [+] System: \2%/p'
echo -e "\033[1;32m [+] Verificando TOP 5 em uso de CPU: \033[m";
ps -eo pcpu,pid,user,args | sort -k1 -r | head -6
}
function checagemParticoes(){
echo -e "\033[1;34m [*] Verificando situação de disco: \033[m";
df -h | awk '{ print "\033[1;32m" " [+] Partição:" "\033[0m", $1 , "\033[1;32m" "- Total:" "\033[0m", $2, "\033[1;32m" "- Usado:" "\033[0m", $3, "\033[1;32m" "- Livre:" "\033[0m", $4, "\033[1;32m" "- Uso%:" "\033[0m", $5 }' |grep -viE 'Filesystem|Sist.'
#threshold="20"
#i=2
#result=`df -kh -x devtmpfs -x tmpfs -x debugfs |grep -v "Filesystem" | awk '{ print $5 }' | sed 's/%//g'`
#result=`df -x devtmpfs -x tmpfs -x debugfs | sed -n 's/^\([^ ]*\) .*[^0-9]\([0-9]*%\).*/\1 \2/p' |grep -v 'Filesystem'`
#for percent in $result; do
# if ((percent > threshold))
# then
# partition=`df -x devtmpfs -x tmpfs -x debugfs | sed -n 's/^\([^ ]*\) .*[^0-9]\([0-9]*%\).*/\1 \2/p' |grep -v 'Filesystem'`
# echo "$partition no servidor $(hostname -f) esta ${percent}% cheio!"
#fi
#let i=$i+1
#done
}
function checagemRede(){
echo
echo -e "\033[1;34m [*] Verificando situação interface de rede: \033[m";
# local ip
echo -e "\033[1;32m [+] Endereço ipv4 local: \033[m";
ip -f inet a | grep "$iface" | awk '/inet/{printf $2 }'
#/sbin/ifconfig $1 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'|grep -v '127.0.0.1'
echo $ipaddr
echo
rxbytes=`/sbin/ifconfig $iface2 | awk '{ gsub(/\:/," ") } ; { print } ' | awk '/RX\ b/ { print $3 }'`
echo -e "\033[1;32m [+] Dados recebidos em megabytes: \033[m"; echo $rxbytes | awk '{$1=$1/1024; print $1,"MB";}'
echo
txbytes=`/sbin/ifconfig $iface2 | awk '{ gsub(/\:/," ") } ; { print } ' | awk '/RX\ b/ { print $8 }'`
echo -e "\033[1;32m [+] Dados transferidos em megabytes: \033[m"; echo $txbytes | awk '{$1=$1/1024; print $1,"MB";}'
echo
}
function checagemZabbix(){
echo
echo -e "\033[1;34m [*] Checa Zabbix Agent: \033[m";
if [ -z "$(ps aux|grep zabbix|grep -v grep)" ]
then
echo -e "\033[1;31m Zabbix Agent não está funcionando \033[m";
else
echo -e "\033[1;36m Zabbix está funcionando \033[m";
fi
}
function zabbixFw(){
echo
echo -e "\033[1;34m [*] Checa regra de firewall - Zabbix Agent: \033[m";
echo -e "\033[1;32m [+] Zabbix Server: x.y.z.v/32 \033[m";
echo -e "\033[1;32m [+] Zabbix Proxy VLAN ID 01: x.y.z.a/32 \033[m";
echo
sudo /sbin/iptables -L -nv |grep -i "x.y.z.v/32\|x.y.z.a/32"
echo
}
function baculaFw(){
echo
echo -e "\033[1;34m [*] Checa regra de firewall - Bacula Agent: \033[m";
echo -e "\033[1;32m [+] Bacula Server: x.y.z.n/32/32 \033[m";
sudo /sbin/iptables -L -nv |grep -i "x.y.z.n/32"
echo
}
function checagemBacula(){
echo
echo -e "\033[1;34m [*] Checa Bacula Agent: \033[m";
if [ -z "$( ps aux|grep zabbix|grep -v grep)" ]
then
echo -e "\033[1;31m Bacula Agent não está funcionando \033[m";
else
echo -e "\033[1;36m Bacula Agent está funcionando \033[m";
fi
echo
}
function checagemServidorWeb(){
echo -e "\033[1;34m [*] Checando se existe serviço de web no servidor: \033[m";
echo -e "\033[1;32m [+] Verificando Apache... \033[m"; if [ -z "$( ps -ef | grep 'http\|httpd\|apache\|apache2' |grep -v grep)" ]
then
echo -e "\033[1;31m Não existe Apache neste servidor ...\033[m"
else
echo -e "\033[1;36m Existe Apache neste servidor! \033[m"
echo -e "\033[1;32m -- Procurando log de erro: \033[m";
fi
echo
echo -e "\033[1;32m [+] Verificando Tomcat ... \033[m"; if [ -z "$( ps -ef | grep 'tomcat' |grep -v grep)" ]
then
echo -e "\033[1;31m Não existe Tomcat neste servidor ...\033[m"
else
echo -e "\033[1;36m Existe Tomcat neste servidor! \033[m"
echo -e "\033[1;32m -- Procurando log de erro: \033[m";
fi
echo
echo -e "\033[1;32m [+] Verificando Jboss ... \033[m"; if [ -z "$( ps -ef | grep 'jboss' |grep -v grep)" ]
then
echo -e "\033[1;31m Não existe Jboss neste servidor ...\033[m"
else
echo -e "\033[1;36m Existe Jboss neste servidor! \033[m"
echo -e "\033[1;32m -- Procurando log de erro: \033[m";
fi
echo
}
function checagemServidorBanco(){
echo -e "\033[1;34m [*] Checando se existe serviço de banco no servidor: \033[m";
echo -e "\033[1;32m [+] Verificando MySQL... \033[m"; if [ -z "$( ps -ef | grep 'mysql\|mysqld\|mariadb' |grep -v grep)" ]
then
echo -e "\033[1;31m Não existe MySQL neste servidor ...\033[m";
else
echo -e "\033[1;36m Existe MySQL neste servidor! \033[m";
echo -e "\033[1;32m -- Procurando log de erro: \033[m";
fi
echo
echo -e "\033[1;32m [+] Verificando PostgreSQL... \033[m"; if [ -z "$( ps -ef | grep 'postgres\|postgresql' |grep -v grep)" ]
then
echo -e "\033[1;31m Não existe PostgreSQL neste servidor ...\033[m";
else
echo -e "\033[1;36m Existe PostgreSQL neste servidor! \033[m";
echo -e "\033[1;32m -- Procurando log de erro: \033[m";
fi
echo
echo -e "\033[1;32m [+] Verificando Oracle... \033[m"; if [ -z "$( ps -ef | grep 'oracle\|oracle\|ora' |grep -v grep)" ]
then
echo -e "\033[1;31m Não existe Oracle neste servidor ...\033[m";
else
echo -e "\033[1;36m Existe Oracle neste servidor! \033[m";
echo -e "\033[1;32m -- Procurando log de erro: \033[m";
fi
echo
}
####
geral
checagemBasica
checagemUsuarios
checagemLoad
checagemCPU
checagemMemoria
checagemSwap
checagemParticoes
checagemRede
checagemZabbix
zabbixFw
checagemBacula
baculaFw
checagemServidorWeb
checagemServidorBanco
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment