Basic usage
We can easily get the HTTP response/status code of a URL and store it in a variable using Bash:
PRODUCTION_RESPONSE=$(curl --write-out '%{response_code}' --head --silent --output /dev/null https://example.com)
Replace https://example.com
with the desired URL.
Authenticated request
To perform a curl request to a password-protected URL that uses the basic HTTP server authentication:
STAGING_RESPONSE=$(curl --user USERNAME:PASSWORD --write-out '%{response_code}' --head --silent --output /dev/null https://example.com)
Replace USERNAME
and PASSWORD
with the relevant details.
If you don’t want to include the password in the Bash script, you can specify only the USERNAME
part (--user USERNAME
).
In this case, curl will ask you to enter the password manually in the terminal.
Further usage
We can then perform various actions based on the response code.
For example:
PRODUCTION_URL="https://example.com"
PRODUCTION_RESPONSE=$(curl --write-out '%{response_code}' --head --silent --output /dev/null $PRODUCTION_URL)
echo -e "Production status code:"
if [ "$PRODUCTION_RESPONSE" == "200" ]
then
echo -e "${GREEN_BOLD}$PRODUCTION_RESPONSE${CLEAR}"
else
echo -e "${RED_BOLD}$PRODUCTION_RESPONSE${CLEAR}"
fi
In the above code, we display the response code in different colors: green for 200
(OK) and red for all other response codes.
Note that you will need to set these color variables first.
To learn more, check out my other post on text formatting in Bash.