Automatizando o Nagios
Publicado por Reinaldo Zancoper Jr (última atualização em 22/01/2013)
[ Hits: 4.446 ]
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
Script Para reiniciar o Debian
Script de Instalação Zabbix Server - Debian
Java 7/8 - Instalação automatizada no Ubuntu
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
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Ubuntu 24.04 e problemas de acesso à rede VPN [RESOLVIDO] (9)
big linux sem audio como resolver (1)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta