oneuptime/Tests/Scripts/endpoint-status.sh

40 lines
1.3 KiB
Bash
Raw Normal View History

2023-09-29 13:16:09 +00:00
#!/bin/bash
# Set the endpoint URL
endpoint_url=$2
name=$1
# if name or endpoint is not provided, exit
if [ $# -eq 0 ]; then
echo "❌ Error: Please provide a name and endpoint URL"
exit 1
fi
# Set the maximum number of retries
max_retries=20 # This allows for 12 attempts, which totals 1 minute with 5 seconds between each retry
retry_interval=5 # Retry interval in seconds
# Initialize variables
retries=0
http_status=0
# Loop until either the endpoint returns 200 or the maximum retries are reached
while [ $retries -lt $max_retries ]; do
# Make a curl request and capture the HTTP status code
http_status=$(curl -s -o /dev/null -w "%{http_code}" $endpoint_url)
# Check if the HTTP status code is 200 (OK)
if [ $http_status -eq 200 ]; then
2023-09-29 13:26:09 +00:00
echo "$name endpoint is up ($endpoint_url)"
2023-09-29 13:16:09 +00:00
exit 0 # Exit the script with success status
else
echo "$name $endpoint_url returned HTTP $http_status, retrying in $retry_interval seconds..."
sleep $retry_interval
retries=$((retries + 1))
fi
done
# If the loop exits without getting HTTP 200, throw an error
echo "❌ Error: Maximum retries reached, $name still not returning HTTP 200. It could be down or taking longer than expected to start."
exit 1 # Exit the script with an error status