Last active
March 11, 2016 15:10
-
-
Save richardsonlima/86f783b7dd7cb1044480 to your computer and use it in GitHub Desktop.
LinuxCollector.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Program information | |
name="LinuxCollector" | |
version="3.0.0" | |
releasedate="25 November 2015" | |
author="Richardson Lima, " | |
author_contact="[email protected]" | |
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