[Shell] curl로 호출하고 HTTP status code 확인하기

by 스뎅(thDeng) on

curl로 URL을 호출한 뒤 HTTP status code를 확인하고 싶다면, -w 옵션으로 찍어보면 된다. curl man page를 보면 아래와 같이 curl의 stdout 출력 이후에 -w 옵션으로 적어준 내용이 출력된다고 적혀 있다.

-w/--write-out <format> Defines what to display on stdout after a completed and successful operation.

man page에는 걸린 시간(time_total, time_namelookup, time_connect 등), 요청/응답 사이즈(size_download, size_upload, size_header 등)처럼 사용할 수 있는 많은 옵션들이 있으니 참고 하자.

다음은 stdout 뒤에 status code, 요청/응답 사이즈 등을 찍는 예제이다.

$ curl -w " - status code: %{http_code}, sizes: %{size_request}/%{size_download}" "http://blog.leocat.kr/"
<!DOCTYPE html>
    ... 생략 ...
</body>

</html>
- status code: 200, sizes: 78/43631

$ # -w 옵션 없이 호출했을 때의 stdout은 </html>에서 끝난다.
$ curl "http://blog.leocat.kr/"
<!DOCTYPE html>
    ... 생략 ...
</body>

</html>
$

stdout 없이 status code만 필요하다면 아래와 같이 -o 옵션을 활용할 수도 있다.

#!/bin/bash
STATUS=$(curl -o /dev/null -w "%{http_code}" "https://blog.leocat.kr/")

if [ $STATUS -eq 200 ]; then
  echo "OKOK"
fi

참고

별도로 명시하지 않을 경우, 이 블로그의 포스트는 다음 라이선스에 따라 사용할 수 있습니다: Creative Commons License CC Attribution-NonCommercial-ShareAlike 4.0 International License