From 53359eea2bd3452e363547794fd3a91b5d0eab41 Mon Sep 17 00:00:00 2001 From: Cyberes Date: Fri, 21 Apr 2023 23:54:19 -0600 Subject: [PATCH] fix check_curl --- check_curl | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) mode change 100644 => 100755 check_curl diff --git a/check_curl b/check_curl old mode 100644 new mode 100755 index 36c7aa6..720a6a1 --- a/check_curl +++ b/check_curl @@ -2,7 +2,7 @@ # Define the usage message usage() { - echo "Usage: $0 -u [-w ] [-c ]" + echo "Usage: $0 -u [-w ] [-c ] [-C ] [-L] [-I] [-H ] [-p] [-R]" exit 3 } @@ -48,6 +48,7 @@ done WARNING_LEVEL=${WARNING_LEVEL:-1} CRITICAL_LEVEL=${CRITICAL_LEVEL:-2} #FOLLOW_REDIRECTS=${FOLLOW_REDIRECTS:-""} +PRINT_ONLY=${PRINT_ONLY:-false} if [ -z "$URL" ]; then usage @@ -56,10 +57,10 @@ fi HEADER_ARGS="" IFS=',' read -ra values <<<"$HEADERS" for value in "${values[@]}"; do - HEADER_ARGS+="-H '$value'" + HEADER_ARGS+=' -H "'$value'" ' done -CURL_CMD="-s -w '%{http_code}\n%{time_total}' $HEADER_ARGS $FOLLOW_REDIRECTS $INSECURE $RESOLVE $URL" +CURL_CMD="" if $PRINT_ONLY; then echo "curl $CURL_CMD" @@ -68,7 +69,7 @@ fi TMP_ERROR_LOG=$(mktemp) TMP_RESPONSE=$(mktemp) -RESPONSE=$(curl -v -o "$TMP_RESPONSE" "$CURL_CMD" 2>"$TMP_ERROR_LOG") +RESPONSE=$(curl --output "$TMP_RESPONSE" -s -w "%{http_code}\n%{time_total}" $(echo "${HEADER_ARGS[@]}" | tr -s ' ') $FOLLOW_REDIRECTS $INSECURE $RESOLVE $URL 2>"$TMP_ERROR_LOG") # shellcheck disable=SC2181 if [ $? -ne 0 ]; then @@ -80,7 +81,7 @@ fi rm -rf "$TMP_ERROR_LOG" RESPONSE_CODE=$(echo "$RESPONSE" | head -n 1) -RESPONSE_TIME=$(printf "%.2f" "$(echo "$RESPONSE" | tail -n 1)") +RESPONSE_TIME=$(printf "%.2f" $(echo "$RESPONSE" | tail -n 1)) OUTPUT_MSG="" OUTPUT_CODE=0 @@ -94,11 +95,11 @@ elif [ $RESPONSE_CODE -eq 200 ]; then OUTPUT_MSG"CRITICAL: response time is very slow ($RESPONSE_TIME seconds)." OUTPUT_CODE=2 else - OUTPUT_MSG="CRITICAL: website is not responding, returned $RESPONSE_CODE code." + OUTPUT_MSG="CRITICAL: website did not return 200, response was $RESPONSE_CODE code." OUTPUT_CODE=2 fi -if [ ! -z ${CONTAINS+x} ]; then +if [[ -n ${CONTAINS+x} ]]; then if ! grep -q "$CONTAINS" "$TMP_RESPONSE"; then OUTPUT_MSG+="\nCRITICAL: response did not contain required string!\nFound: $(cat "$TMP_RESPONSE")" OUTPUT_CODE=2 @@ -110,5 +111,20 @@ rm -rf "$TMP_RESPONSE" OUTPUT_MSG+=" | response_time=${RESPONSE_TIME}s;$WARNING_LEVEL;$CRITICAL_LEVEL;0" +case $OUTPUT_CODE in +0) + echo "OK: $URL" + ;; +1) + echo "WARNING: $URL" + ;; +2) + echo "CRITICAL: $URL" + ;; +*) + echo "CRITICAL: $URL" + ;; +esac + echo -e "$OUTPUT_MSG" exit $OUTPUT_CODE