공개 HTTPS 사이트가 작동 중인지 확인하는 Bash 스크립트

공개 HTTPS 사이트가 작동 중인지 확인하는 Bash 스크립트

HTTPS의 공개 웹사이트가 작동 중인지 확인하기 위해 bash 스크립트에 또 다른 코드 블록을 설정하려고 합니다. CURL을 사용하여 이 작업을 수행할 수 있나요? CURL 외에 사용할 수 있는 제안 사항입니다. 감사해요

답변1

컬 대신 wget을 사용하여 수행하는 방법은 다음과 같습니다. MacOS에는 기본적으로 wget이 제공되지 않습니다.

성공적인 웹 요청은 200이라는 코드를 반환하고, 실패하면 300, 400, 404 등을 반환합니다. (참조:REST API 코드)

이 줄은 웹 요청이 성공하면 를 반환하고 1, 그렇지 않으면 반환합니다.0

wget -q  -O /tmp/foo google.com | grep '200' /tmp/foo | wc -l
1

답변2

많은 것 중 하나:

if curl -s --head  --request GET https://example.com | grep "200 OK" > /dev/null; then 
   echo "mysite.com is UP"
else
   echo "mysite.com is DOWN"
fi

답변3

나기오스check_http 플러그인응답에서 특정 텍스트를 확인하는 것을 포함하여 이 작업 외에도 훨씬 더 많은 작업을 수행할 수 있습니다. Nagios 자체와 독립적으로 쉘 스크립트에서 실행할 수 있습니다.

$ check_http --ssl -H www.google.com -r 'Feeling Lucky'
HTTP OK: HTTP/1.1 200 OK - 11900 bytes in 0.086 second response time |time=0.085943s;;;0.000000 size=11900B;;;0

$ echo $?
0

답변4

비슷한 질문에 대한 답변이 여기에 있습니다.

https://stackoverflow.com/questions/12747929/linux-script-with-curl-to-check-webservice-is-up

Qoute는 Burhan Khalid의 작품입니다.

컬 -sL -w "%{http_code}\n" "http://www.google.com/" -o /dev/null

-s = 자동 cURL의 출력

-L = 리디렉션 따르기

-w = 사용자 정의 출력 형식

-o = HTML 출력을 /dev/null로 리디렉션합니다.

예:

[~]$ 컬 -sL -w "%{http_code}\n" "http://www.google.com/" -o /dev/null

출력을 캡처하려면 아마도 \n을 제거했을 것입니다.

따라서 유효한 인증서를 확인하지 않으려면 옵션에 -k를 추가하고 http 대신 https를 사용하면 됩니다.

curl -sL -w "%{http_code}\n" "https://www.google.com/" -o /dev/null

반환 코드 0과 함께 상태 코드 200을 보고합니다.

그 밖의 모든 경우에는 스크립트에서 응답을 정의해야 합니다.

관련 정보