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을 보고합니다.
그 밖의 모든 경우에는 스크립트에서 응답을 정의해야 합니다.