Case com dois parâmetros.

1. Case com dois parâmetros.

Bruno Nunes
brunomnunes

(usa Outra)

Enviado em 12/03/2019 - 10:48h

Bom dia Pessoal.

Tenho uma dúvida a respeito do uso do case, a minha necessidade é :

Realizar um curl em uma URL específica de acordo o case informado, e posteriormente eu iria realizar um grep de uma string na saida desse curl.
Mas a questão é que um robô irá executar esse script e preciso automatizar a execução (colocar o JOB que preciso fazer o curl e qual o possível erro que preciso fazer o grep na saida do curl) , pois há diversos "CURL's e GREP's " que são diferentes e quero tratar no mesmo script.

Até o momento o script esta assim :

#!/bin/bash

case $1 in

"AuraKPIs-ProdDaily" )
i=`echo ${1}`
echo "Executando o curl no JOB ${i}"
curl -s -S -u ${AUTHENTIC} ${URL}${i}/lastBuild/consoleText > ${DIR}$i.log
;;

"Aura-Retention-Monthly" )
i=`echo ${1}`
echo "Executando o curl no JOB ${i}"
curl -s -S -u ${AUTHENTIC} ${URL}${i}/lastBuild/consoleText > ${DIR}$i.log
;;

"TI_AuraKPIs-Manually" )
i=`echo ${1}`
echo "Executando o curl no JOB ${i}"
curl -s -S -u ${AUTHENTIC} ${URL}${i}/lastBuild/consoleText > ${DIR}$i.log
;;

*)
echo "Insira uma opção para executar o script"
;;

esac




ERROR () {

erros=('out_of_memory' 'no connection')
for j in ${erros[@]}
do

echo "Executando o grep no arquivo $i.log para os seguintes erros $j"

erros=`grep ${j} $DIR/$i.log`
if [ "$erros" == "" ]; then
echo "Sem erros"
else
echo "$erros"
fi

sleep 2

done

}

OBS : Como não consegui colocar o grep como parâmetro do case, criei uma função a qual tem os possíveis erros que preciso procurar nas saídas do curl.

Se alguém puder me ajudar eu agradeço !!!!



  


2. Re: Case com dois parâmetros.

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 12/03/2019 - 20:23h

brunomnunes escreveu:

Bom dia Pessoal.

Tenho uma dúvida a respeito do uso do case, a minha necessidade é :

Realizar um curl em uma URL específica de acordo o case informado, e posteriormente eu iria realizar um grep de uma string na saida desse curl.
Mas a questão é que um robô irá executar esse script e preciso automatizar a execução (colocar o JOB que preciso fazer o curl e qual o possível erro que preciso fazer o grep na saida do curl) , pois há diversos "CURL's e GREP's " que são diferentes e quero tratar no mesmo script.

Até o momento o script esta assim :

#!/bin/bash

case $1 in

"AuraKPIs-ProdDaily" )
i=`echo ${1}`
echo "Executando o curl no JOB ${i}"
curl -s -S -u ${AUTHENTIC} ${URL}${i}/lastBuild/consoleText > ${DIR}$i.log
;;

"Aura-Retention-Monthly" )
i=`echo ${1}`
echo "Executando o curl no JOB ${i}"
curl -s -S -u ${AUTHENTIC} ${URL}${i}/lastBuild/consoleText > ${DIR}$i.log
;;

"TI_AuraKPIs-Manually" )
i=`echo ${1}`
echo "Executando o curl no JOB ${i}"
curl -s -S -u ${AUTHENTIC} ${URL}${i}/lastBuild/consoleText > ${DIR}$i.log
;;

*)
echo "Insira uma opção para executar o script"
;;

esac




ERROR () {

erros=('out_of_memory' 'no connection')
for j in ${erros[@]}
do

echo "Executando o grep no arquivo $i.log para os seguintes erros $j"

erros=`grep ${j} $DIR/$i.log`
if [ "$erros" == "" ]; then
echo "Sem erros"
else
echo "$erros"
fi

sleep 2

done

}

OBS : Como não consegui colocar o grep como parâmetro do case, criei uma função a qual tem os possíveis erros que preciso procurar nas saídas do curl.

Se alguém puder me ajudar eu agradeço !!!!


Boa noite Bruno.
Não testei....
Não tenho a URL completa...
Teoricamente, está funcionando.....
Eliminei o "case", e simplifiquei, motivo?
Muitos comandos repetidos.....
Segue:
#!/bin/bash
DIR="DIRETORIO"
log="${DIR}/JOB.log"
ERRO="${DIR}/ERRO.txt"
ParVal="AuraKPIs-ProdDaily|Aura-Retention-Monthly|TI_AuraKPIs-Manually"
erros="out_of_memory no connection"

if [[ $1 =~ ($ParVal) ]];then #Testa se $1 é um parâmetro valido.
JOB="${1}"
echo -e "\n Executando o curl no JOB ${JOB}\n E executando o \"grep\" para os erros:\n ${erros/ / e }"
curl -s -S -u ${AUTHENTIC} ${URL}${JOB}/lastBuild/consoleText|grep -E "${erros/ /|}" > ${ERRO}
[[ -s ${ERRO} ]] && echo -e "ENCONTRADO ERRO:\n$(cat ${ERRO})\n" || echo "ERRO Não ENCONTRADO"
else
echo -e "Requer parâmetro Válido\nQue são:\n${ParVal//|/\\n}"
fi


OBS.: Não Abandone o Tópico!
echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -n '/^[ ]\+Se/,/dou/p')\n"
Dica: se possível, use o lynx no lugar do curl, o lynx por ser um navegador, mostra somente o conteúdo da pagina . . .

att.:
Marcelo Oliver


3. Re: Case com dois parâmetros.

Bruno Nunes
brunomnunes

(usa Outra)

Enviado em 13/03/2019 - 15:12h

Muito Obrigado ! Irei fazer o teste agora.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts