명령 출력을 읽는 쉘 스크립트

명령 출력을 읽는 쉘 스크립트

저는 웹사이트에서 몇 가지 사항을 모니터링하는 스크립트를 작성 중입니다. 그 중 하나는 http 상태와 응답 시간을 모니터링하는 것입니다.

스크립트에서 http_status를 가져오는 명령을 실행합니다. (http 명령은 httpie: 인간을 위한 Curl과 유사한 도구에서 제공됩니다.)

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

이 명령은 상태 자체(예: 200, 404, 403 등)를 반환하거나 다음 두 가지를 더 반환합니다.

http: error: Request timed out (10.0s)

또는

http: error: ConnectionError ..."

참고: 시간 초과를 늘려도 문제가 해결되지 않았습니다. 10초가 필요해요.

이 두 가지 다른 옵션을 반환할 때 특정 코드를 어떻게 입력할 수 있나요? 시간 초과 반환 9999및 오류 등 8888.

답변1

간단한 case설명으로 원하는 작업을 수행할 수 있습니다.

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

*"timed out"*)또는 같은 와일드카드 문자를 사용할 수 있습니다 *"ConnectionError"*).

관련 정보