Script Nagios + NRPE checa filas CUPS

Publicado por Rogério Tomassoni em 07/05/2011

[ Hits: 5.757 ]

 


Script Nagios + NRPE checa filas CUPS



Script para atuar junto com Nagios que verifica filas de impressão CUPS. Funciona com NRPE.

Crie o script "check_imp_cups" com conteúdo abaixo, dê permissões de execução para o usuário que está executando o Nagios.

#!/bin/bash

# Script que verifica filas cups
# trabalhos parados.
# exit 1 = warning; exit 2 = Critico; exit 3 = Unknown

# Script que habilita caso esteja parada
habilita_imp="/usr/local/nagios/libexec/habilitaImpressorasCups"

# Script que reinicia os trabalhos parados
reinicia_trab="/usr/local/nagios/libexec/reiniciaTrabalhosCups"

# Testa primeiro argumento nome da fila
if [ -z "$1" ]
then
    echo "Informe nome da fila. Ex.: ./check_imp_cups nome_fila"
    exit 3
fi

# Notificacao
MSG=""

# A notificação via "netsend" só irá funcionar para notificar estações Windows com mensageiro ativo.
notificacao(){

    #Rogerio
    echo $MSG | smbclient -M sistema02 -I 10.1.5.50 -U "Impressora balcao NFE"

}

# Primeiro argumento nome da fila
nomeFila=$1

# Arquivo temporario
tmp_jobs="/tmp/$1-jobscups"

# Zera contador
count_job=0

# Verifica trabalhos parados, faz contagem
verifica_jobs_parados (){
        # Verifica todos os trabalhos parados
        jobs=$( lpq -P$nomeFila )
        echo "$jobs" > $tmp_jobs
        # Le arquivo criado com todos os trabalhos;
        while read JOB; do
        # Remove as linhas desnecessarias e cria um novo arquivo auxiliar
        if [ $count_job -gt 1 ]; then
        #echo "$JOB" >> $tmp_jobs_aux;
        job_owner=$(echo "$JOB" | tr -s " " ": "| cut -d: -f2)
        job_id=$(echo "$JOB" | tr -s " " ": "| cut -d: -f3)
        fi
        count_job=$(expr $count_job + 1);
        done < $tmp_jobs
        # Ajusta quantidade de trabalhos manipulados
        count_job=$(expr $count_job - 2);
}

ON_OFF=$(lpstat -p $nomeFila | grep -iw $nomeFila|cut -d" " -f3)
TRAB_ON_OFF=$(lpstat -a $nomeFila | grep -iw $nomeFila |cut -d" " -f2)

# Testa os estados da fila
if [[ "$ON_OFF" != "disabled" && "$ON_OFF" != "desativada" ]]; then
    if [[ "$TRAB_ON_OFF" = "accepting" || "$TRAB_ON_OFF" = "aceitando" ]]; then
     verifica_jobs_parados
    echo "Fila OK. Trab. parados: $count_job"
    exit 0;
    elif [[ "$TRAB_ON_OFF" != "accepting" || "$TRAB_ON_OFF" != "aceitando" ]]; then
    verifica_jobs_parados
    MSG="Verifique a fila: $nomeFila, desativada. Trab. parados: $count_job"
    #notificacao
    echo "Ativa, mas nao esta aceitando trabalhos. Trab. parados: $count_job"
    exit 1;
    fi
   elif [[ "$ON_OFF" = "disabled" || "$ON_OFF" = "desativada" ]]; then
   echo "Verifique a fila, desativada. Trab. parados: $count_job"
   MSG="Detectei a fila: $nomeFila, desativada. Com $count_job trab. parados. Se continuar recebendo esta msg realize procedimento manual."
   #Lembre-se isso só funciona para Windows com mensageiro ativo.
   notificacao

   exit 2;
  else
  echo "Verifique o script check_imp_cups, opcao desconhecida."
  exit 3;
fi
exit 3;

No nrpe.cfgi:

#Filas de impressao
command[check_nfebalba]=/usr/local/nagios/libexec/check_imp_cups <nome_da_fila>

Exemplo:

#Filas de impressao
command[check_nfebalba]=/usr/local/nagios/libexec/check_imp_cups nfebalba

No Nagios:

Crie por exemplo o arquivo filasImp.cfg (adicione-o no nagios.cfg) com o conteúdo:

define host{
   use generic-printer
   host_name Balcao BA
   alias nfebalba
   address 10.12.0.56
   hostgroups ImpressorasNFE
}

define service{
   use fila_imp
   host_name Balcao BA
   service_description Status Fila Imp.
   check_command check_nrpe_com_ssl_cups!check_nfebalba
}

Simples assim...

Outras dicas deste autor

Limpando lixeira centralizada do Samba

Renomeando Konsole

Plugin NFe 2.00 Nagios

Bloqueando tráfego via MAC com iptables

Acertando permissão do nagios.cmd

Leitura recomendada

Gmail - Como evitar que emails do VOL sejam bloqueados

URL da IDE Intel XDK no GNU/Linux

Codificação Hexadecimal On-Line

Livro e site sobre Javascript

Claro.com.br não funciona no Firefox (solução alternativa)

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário