Shell Script para ler a saída do comando

1

Estou fazendo um script para monitorar algumas coisas de sites e uma das coisas é monitorar o status do http e seu tempo de resposta.

No script, eu executo um comando para obter o http_status: (o comando http é fornecido por: http: Uma ferramenta parecida com o Curl para humanos)

http -timeout 10 -follow -h http: //$I/ | grep "HTTP\/1.1" | awk '{print $2}'

Este comando retornará o status em si, ou seja: 200, 404, 403, etc. ou retornará duas outras coisas:

http: error: Request timed out (10.0s)

ou

http: error: ConnectionError ..."

Nota: Aumentar o tempo limite não resolve meu problema. Eu preciso que seja 10 segundos.

Como faço para colocar um código específico ao retornar essas duas outras opções? Por exemplo, no retorno do tempo limite 9999 e erro 8888 .

    
por Jorge 17.08.2017 / 18:34

1 resposta

0

Uma simples declaração case deve fazer o que você deseja:

case "$(http_status)" in
    "case 1")
        return 199
        ;;
    "case 2")
        return 198
        ;;
    *)
        # All is well; do nothing
        ;;
esac

Você pode usar curingas, e. g. *"timed out"*) ou *"ConnectionError"*) .

    
por 17.08.2017 / 18:39