#!/bin/sh # curl -s https://www.homedepot.com/p/HDX-Black-5-Tier-Plastic-Garage-Storage-Shelving-Unit-36-in-W-x-74-in-H-x-18-in-D-241592/306331734 | grep -v href | md5sum | awk '{print $1}' checkType="total" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0" status="" verbose="" size=0 checkSize="" while [ -n "$1" ]; do case "$1" in --alpha) checkType="alpha"; shift 1;; -v) verbose="true"; shift 1;; -u) url="$2"; shift 2;; -s) size="$2"; shift 2;; *) shift 1;; esac done check_size_total() { [ -n "$verbose" ] && echo "DEBUG: curl --connect-timeout 10 -A \"$agent\" -skL \"$url\" -w \"%{size_download}\" -o /dev/null" checkSize=$(curl --connect-timeout 10 -A "$agent" -skL "$url" -w "%{size_download}" -o /dev/null) status=$? if [ "$status" != "0" ]; then sleep 2 checkSize=$(curl --connect-timeout 10 -A "$agent" -skL "$url" -w "%{size_download}" -o /dev/null) status=$? fi } check_size_alpha() { output=`curl --connect-timeout 10 -A "$agent" -skL "$url"` status=$? if [ "$status" != "0" ]; then sleep 2 output=`curl --connect-timeout 10 -A "$agent" -skL "$url"` status=$? fi checkSize=`echo "$output" | tr -d -c "[:alnum:]" | wc -c` } case $status in 0) ;; 3) echo "UNKNOWN: malformed URL $url" && exit 3;; 6) echo "WARNING: could not resolve host for $url" && exit 3;; 7) echo "WARNING: could not connect to host $url" && exit 1;; 28) echo "WARNING: curl timeout" && exit 1;; 35) echo "WARNING: TLS/SSL handshake failure - $output" && exit 1;; 47) echo "WARNING: too many redirects" && exit 1;; 52) echo "WARNING: $url returned no data" && exit 1;; esac check_size_${checkType} if [ "$size" = "$checkSize" ]; then echo "OK; received $size bytes|bytes=${checkSize}B" exit 0 else echo "CRITICAL; $checkSize is not expected value of $size bytes|bytes=${checkSize}B" exit 2 fi