shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Ajuda com teste de string


From: Felipe
Subject: Ajuda com teste de string
Date: Tue, 07 Apr 2009 19:20:57 -0000
User-agent: eGroups-EW/0.82

Boa tarde a todos,

Sou novato em SH e estou encontrando dificuldades para tratar um teste
com o comando "if" e gostaria de alguma dica, se possivel.
Antes de começar, eu dei uma lida nas aulas do Julio para ter uma
noção do que estava fazendo, porém estou com uma duvida num script
para monitorar uma impressora T644 da Lexmark. Peguei este script na net
e estou modificando conforme as minha necessidades aqui.

O problema é o seguinte, este script é para o Nagios, eu testo as
informações com uma MIB, e baseado na mensagem que a impressora
mostra no painel eu faço o teste com o script pra dizer ao usuario o
status atual da impressora, todas as mensagens estão funcionando
normalmente, menos a mensagem mais "basica" a mensagen de: "Pronto."  =(

estou colando aqui o script para vocês analisarem se possivel:

#!/bin/sh
SCP="snmpget"
ARGS='-c public -v 1 -O v'
HOST=$1
OID='mib-2.43.16.5.1.2.1.1'
CMD=`$SCP $ARGS $HOST $OID |sed 's/STRING: "//'`
ST1=`$SCP $ARGS $HOST $OID |grep "Pronto. "`
ST2=`$SCP $ARGS $HOST $OID |grep -i -o "Pronto. Bandeja 1 ausente."`
ST3=`$SCP $ARGS $HOST $OID |grep -i -o "Inserir bandeja 1"`
ST4=`$SCP $ARGS $HOST $OID |grep -i -o "Pronto. Pouco papel band. 1."`
ST5=`$SCP $ARGS $HOST $OID |grep -i -o "Pronto. Bandeja 1 vazia."`
ST6=`$SCP $ARGS $HOST $OID |grep -i -o "Fechar porta ou inserir"`
ST7=`$SCP $ARGS $HOST $OID |grep -i -o "Ocupada. "`
if [ "$ST1" = "Pronto. " ] ; then
     OUTPUT="${OUTPUT} OK - Impressora Pronta"
     STAT=0
     elif [ "$ST2" = "Pronto. Bandeja 1 ausente." ] ; then
         OUTPUT="${OUTPUT} Critical - Bandeja 1 aberta."
         STAT=2
         elif [ "$ST3" = "Inserir bandeja 1" ] ; then
             OUTPUT="${OUTPUT} Critical! - Inserir bandeja 1"
             STAT=2
             elif [ "$ST4" = "Pronto. Pouco papel band. 1." ] ; then
                 OUTPUT="${OUTPUT} OK - Pocuco Papel na Bandeja 1."
                 STAT=1
                 elif [ "$ST5" = "Pronto. Bandeja 1 vazia." ] ; then
                     OUTPUT="${OUTPUT} Critical! - Pronto. Bandeja 1
vazia."
                     STAT=2
                     elif [ "$ST6" = "Fechar porta ou inserir" ] ; then
                         OUTPUT="${OUTPUT} Critical! - Fechar porta ou
inserir o toner"
                         STAT=2
                         elif [ "$ST7" = "Ocupada. " ] ; then
                             OUTPUT="${OUTPUT} OK - Ocupada. "
                             STAT=0
                         else
                             OUTPUT="${OUTPUT} Critical! - `echo $CMD`"
                             STAT=2
fi
echo $OUTPUT
exit $STAT

se vocês olahrem verão que o primeiro "if" teste pra ver se a
impressora está "OK" e caso positivo, seria exeibido a mensagem de
"OK - Impressora pronta" e por ultimo, caso nenhum dos teste fosse
positivo seria retornada a mensagem que está no painel da impressora
com status "Critical" seguido da mensagem que está no painel,
porém, quando colocao o script pra rodar, ele me da mensagem de
"Critical! - Pronto" sendo que o correto seria dar "OK - Impressora
pronta".
ja testei usar a opção com o "-i -o" que vi na net que serve para
ignorar maiusculas e minusculas e pegar exatamente o conteudo gravado na
variavel "CMD", porém, dessa forma os outros status não funcionam,
e do jeito que está agora só não funciona o 1º "if".
Pensei em tirar o 1º "if" de colocar que no "else" fosse informado
OK, mais achei que seria um "gato" então preferi postar aqui pra
pedir uma ajuda.

Será que alguém consegue me ajudar?


Obrigado!



[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]