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]