Here is the simple bash script that checks if a website is running on a Linux or Bitnami server and restarts the web service if it’s not.
#!/bin/bash
WEBSITE_URL="http://example.com"
WEBSITE_STATUS=$(curl -IsS ${WEBSITE_URL} | head -n 1 | cut -d " " -f2)
if [ "${WEBSITE_STATUS}" != "200" ]; then
echo "Website is not responding. Restarting web service..."
sudo /opt/bitnami/ctlscript.sh restart apache // this fro bitnami
sudo service apache2 restart / this is for Linux running with Apache2
sleep 10 # Give some time for the service to restart
NEW_WEBSITE_STATUS=$(curl -IsS ${WEBSITE_URL} | head -n 1 | cut -d " " -f2)
if [ "${NEW_WEBSITE_STATUS}" = "200" ]; then
echo "Web service restarted successfully."
else
echo "Failed to restart web service. Please check manually."
fi
else
echo "Website is running normally."
fi
Here’s what the script does:
- Defines the URL of the website to check (WEBSITE_URL).
- Uses curl to send a HEAD request to the website and captures the HTTP status code (200 for OK).
- If the status code is not 200, it assumes the website is not responding and restarts the Apache web service using the Bitnami control script.
- After restarting the service, it waits for 10 seconds to allow time for the service to start.
- Checks the website status again. If it returns a 200 status code, it confirms that the web service has restarted successfully.
- If the website still doesn’t respond after restarting the service, it prints a failure message.
Make sure to replace “http://example.com” with the actual URL of your website. Also, ensure that the path to the Bitnami control script (/opt/bitnami/ctlscript.sh) is correct for your installation.
Save this script to a file (e.g., check_website.sh), make it executable (chmod +x check_website.sh), and then you can schedule it to run periodically using cron or any other scheduling tool you prefer. For example, you can run it every 5 minutes by adding the following line to your crontab:
*/5 * * * * /path/to/check_website.sh
Replace /path/to/check_website.sh with the actual path to your script.