Automatizando o Nagios
Publicado por Reinaldo Zancoper Jr (última atualização em 22/01/2013)
[ Hits: 4.737 ]
Homepage: www.zancoper.com
Nada melhor quando você tem um Nagios automatizado, pra quando você precisar criar um Host não precisar ficar editando arquivos e acaba tendo um pouco de trabalho.
Por isso criei um script que automatiza isso tudo, você só precisa preencher os campos solicitados.
Segue o script para automatizar seu Nagios, lembrando que esse padrão só serve para o meu Nagios, então deverá ler todo o arquivo e editar da forma que funciona sua configuração.
Se tiver conhecimento de GNU/Linux e script, não terá problemas para entender este.
NOTAS:
Você precisará editar o arquivo hostgroups.cfg para o script poder entender os menus criados para preencher os campos necessários.
Você precisará incluir uma linha comentada depois da linha "alias" com o mesmo nome da variável criada dentro do script, como abaixo:
######## Grupo CPD
define hostgroup {
hostgroup_name SW_A1-3Com
alias SW_A1-3Com
######## SW_A1-3Com
members Notebook001,Notebook002
}
Se fizer dessa forma funcionará perfeitamente.
Nessa edição do hostgroups.cfg você está simplesmente criando uma referência para o script, pode incluir o host na posição exata, lembrando que dei um exemplo de apenas um grupo, se você tiver 3 grupos, terá que criar a linha comentada nas respectivas linhas.
- Não esqueça de fazer um backup das configurações do Nagios antes de colocar a mão na massa!
- Não esqueça de dar permissão de execução ao arquivo criado, no meu caso: add_nagios.sh
Abraços!
#!/bin/bash
clear
DATA=`date`
grupo=0
switch=0
echo "###############$DATA######################################"
echo "# adicionador de maquinas no sistema Nagios por terminal #"
echo "# created by: Reinaldo Zancoper Jr #"
echo "# #"
echo "# http://www.zancoper.com #"
echo "# zancoper@zancoper.com #"
echo "##########################################################"
#"L1" define o local onde esta o arquivo a ser incrementado
L1="/usr/local/nagios/etc/objects/hostextinfo.cfg"
LINE="######################$DATA###############################"
LINE2="##########################################################"
LIN=" "
# LONG e o escopo da rede, ex: do IP de uma maquina 10.2.0.45, o escopo seria "10.2."
LONG="192.168."
echo "$LIN"
echo "$LIN"
echo "Digite o nome da maquina para cadastrar no Nagios"
read NOME
echo "Descricao da maquina a ser adicionada"
read ALIAS
echo "Digite o final do IP da maquina na rede, ex: 192.168.X.X"
read IP
echo "$LIN"
echo "$LIN"
#Menu de opcoes dos Grupos do Nagios
echo "Escolha o Tipo do Host
1. windows-server
2. linux-server
3. generic-switch
4. Sair "
read input
if test "$input" = 1
then
grupo=$(echo "windows-server")
fi
if test "$input" = 2
then
grupo=$(echo "linux-server")
fi
if test "$input" = 3
then
grupo=$(echo "generic-switch")
fi
echo "$LIN"
echo "$LIN"
#Menu de opcoes dos Switches do Nagios
echo "Escolha de qual (Parent) o micro faz parte
1. SW_A1-3Com
2. SW_B1-3Com
3. SW_C1-3Com
4. Sair "
read input
if test "$input" = 1
then
parents=$(echo "SW_A1-3Com")
fi
if test "$input" = 2
then
parents=$(echo "SW_B1-3Com")
fi
if test "$input" = 3
then
parents=$(echo "SW_C1-3Com")
fi
echo "$LIN"
echo "$LIN"
#Menu de opcoes dos Grupos do Nagios
echo "Escolha de qual Grupo o micro faz parte
1. Switch ADM
2. Switch CPD
3. Switch Engenharia
4. Sair "
read input
if test "$input" = 1
then
switch=$(echo "Switch ADM")
fi
if test "$input" = 2
then
switch=$(echo "Switch CPD")
fi
if test "$input" = 3
then
switch=$(echo "Switch Engenharia")
fi
rm -rf /tmp/teste.txt
LINHAS=`cat /usr/local/nagios/etc/objects/hostgroups.cfg | wc -l`
for y in $(seq $LINHAS);
do
cat /usr/local/nagios/etc/objects/hostgroups.cfg | head -$y | tail -1 >> /tmp/teste.txt;
NOVALINHA=`cat /usr/local/nagios/etc/objects/hostgroups.cfg | head -$y | tail -1`
if [ "$NOVALINHA" == "######## $switch" ]; then
echo "members $NOME" >> /tmp/teste.txt
fi
done
cp /tmp/teste.txt /usr/local/nagios/etc/objects/hostgroups.cfg
#echo "Defina qual o Switch esse host fara parte (Parents), ex: BBone-SW_A1-3Com"
#read PARENTS
echo "$LIN" >> "$L1"
echo "$LINE" >> "$L1"
echo "$LINE2" >> "$L1"
echo "$LINE2" >> "$L1"
echo "define hostextinfo{" >> "$L1"
echo " host_name $NOME" >> "$L1"
echo " icon_image microsoft-windows.png" >> "$L1"
echo " icon_image_alt $NOME" >> "$L1"
echo " vrml_image microsoft-windows.png" >> "$L1"
echo " statusmap_image microsoft-windows.png" >> "$L1"
echo " 2d_coords 100,250" >> "$L1"
echo " 3d_coords 100.0,50.0,75.0" >> "$L1"
echo "}" >> "$L1"
# Aqui estamos criando o arquivo com o nome do host
touch /usr/local/nagios/etc/objects/windows/$NOME.cfg
#"L2" define a configuracao padrao do conteudo do arquivo criado anteriormente
L2="/usr/local/nagios/etc/objects/windows/$NOME.cfg"
echo "$LIN"
echo "$LIN"
echo "$LIN"
echo "confirma os dados a seguir: $NOME, $ALIAS, $LONG$IP, $grupo, $switch, $parents ao Nagios? (<enter> confirma, ctrl+c pra cancelar/sair)"
read "enter"
echo "$LIN" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LINE" >> "$L2"
echo "$LINE2" >> "$L2"
echo "define host{" >> "$L2"
echo " use $grupo" >> "$L2"
echo " host_name $NOME" >> "$L2"
echo " alias $ALIAS" >> "$L2"
echo " address $LONG$IP" >> "$L2"
echo " parents $parents" >> "$L2"
echo " notifications_enabled" 1 >> "$L2"
echo "}" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LINE2" >> "$L2"
echo "Define a service to "ping" na placa de rede"
echo "define service{" >> "$L2"
echo " use local-service" >> "$L2"
echo " host_name $NOME" >> "$L2"
echo " service_description Ping $LONG$IP" >> "$L2"
echo " check_command check_ping!100.0,20%!500.0,60%" >> "$L2"
echo " notifications_enabled 1" >> "$L2"
echo "}" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LINE2" >> "$L2"
echo "Verifica o tempo ligado"
echo "define service{" >> "$L2"
echo " use generic-service" >> "$L2"
echo " host_name $NOME" >> "$L2"
echo " service_description Tempo-LigadoPing $LONG$IP" >> "$L2"
echo " check_command check_ping!100.0,20%!500.0,60%" >> "$L2"
echo " notifications_enabled 1" >> "$L2"
echo "}" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LINE2" >> "$L2"
echo "Verifica a versao do NsClient++"
echo "define service{" >> "$L2"
echo " use generic-service" >> "$L2"
echo " host_name $NOME" >> "$L2"
echo " service_description versao-NSClient++" >> "$L2"
echo " check_command check_nt!CLIENTVERSION -H $LONG$IP" >> "$L2"
echo " notifications_enabled 1" >> "$L2"
echo "}" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LINE2" >> "$L2"
echo "Verifica a utilizacao da CPU"
echo "define service{" >> "$L2"
echo " use generic-service" >> "$L2"
echo " host_name $NOME" >> "$L2"
echo " service_description Utilizacao-de-CPU" >> "$L2"
echo " check_command check_nt!CPULOAD!-l 5,80,90 -H $LONG$IP" >> "$L2"
echo " notifications_enabled 1" >> "$L2"
echo "}" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LINE2" >> "$L2"
echo "Verifica a memoria utilizada"
echo "define service{" >> "$L2"
echo " use generic-service" >> "$L2"
echo " host_name $NOME" >> "$L2"
echo " service_description Memoria" >> "$L2"
echo " check_command check_nt!MEMUSE!-w 90 -c 92 -H $LONG$IP" >> "$L2"
echo " notifications_enabled 1" >> "$L2"
echo "}" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LINE2" >> "$L2"
echo "Verifica executavel do Anti-Virus Trend"
echo "define service{" >> "$L2"
echo " use generic-service" >> "$L2"
echo " host_name $NOME" >> "$L2"
echo " service_description Verifica-Anti-Virus-Trend" >> "$L2"
echo " check_command check_nt!PROCSTATE!-d SHOWALL -l tmlisten.exe -H $LONG$IP" >> "$L2"
echo " notifications_enabled 1" >> "$L2"
echo "}" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LINE2" >> "$L2"
echo "Verifica a verifica a unidade C"
echo "define service{" >> "$L2"
echo " use generic-service" >> "$L2"
echo " host_name $NOME" >> "$L2"
echo " service_description Particao-C" >> "$L2"
echo " check_command check_nt!USEDDISKSPACE!-l c -w 90 -c 95 -H $LONG$IP" >> "$L2"
echo " notifications_enabled 1" >> "$L2"
echo "}" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LIN" >> "$L2"
echo "$LINE2" >> "$L2"
echo "Verifica executavel do Licenciamento do Terminal Sercer"
echo "define service{" >> "$L2"
echo " use generic-service" >> "$L2"
echo " host_name $NOME" >> "$L2"
echo " service_description Verifica-Servidor-de-Licencas-do-TS" >> "$L2"
echo " check_command check_nt!PROCSTATE!-d SHOWALL -l lserver.exe -H $LONG$IP" >> "$L2"
echo " notifications_enabled 1" >> "$L2"
echo "}" >> "$L2"
echo "$LINE2"
echo "Inicializando o servicos do Nagios"
echo "$LINE2"
/etc/init.d/nagios reload
echo "$LINE2"
echo "Nagios reiniciado"
echo "$LINE2"
echo "Agora sera necessario incluir o host criado dentro do arquivo hostgroups.cfg manualmente... depois reinicia o Nagios."
echo "$LINE2"
echo "Caso ocorra algum problema, nao se preocupe, execute o comando para verificar os servicos do Nagios."
echo "$LINE2"
echo "(Aperte <enter> para adicionar outra maquina e Ctrl+c pra cancelar/sair)"
read "enter"
##sh add-to-nagios.sh
Otimiza.sh - Atualiza seu Ubuntu/Debian
Configurando IP, Nome de maquina, Gateway e Samba.
Proc_del - Desinstalar programas compilados
Avisos de segurança do espaço em uso!
Inserção de máquinas no banco de dados para controle interno
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
PIP3 - erro ao instalar módulo do mariadb para o Python (9)
É normal não gostar de KDE? (8)
O programa assinador digital (0)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)









