Bash Status Code
The following script is for my own reference. It’s a simple script that pings a URL and looks for a bash status code of 200. If the response does not return the status code of 200, it will add an entry to a log file. Inside that block of code you can do further actions, such as send an SMS alert.
#!/bin/bash url="www.mywebsite.com" status_code=$(curl -o /dev/null --silent --head --write-out '%{http_code}\n' $url) date=`date` if [ $status_code -ne "200" ] then echo "status check failed at $date" >> /var/log/status_check.log #You can add further actions here fi
SMS Alerts
Since I mentioned SMS alerts, I might as well cover the basics of sending SMS here. One way to do it is to get API access to one of the SMS gateways. The easiest and the quickest SMS api in my opinion is SMSify. If you get an SMSify account, you will automatically get access to their developer API. All you need to do is purchase SMS credits, which are dead cheap. Let’s say you’ve got an SMSify account and they API key. You can then write a simple Ruby script that sends SMS to any mobile number. First you will need to download SMSify ruby gem:
gem install smsify
Now you are ready to send SMS using our ruby wrapper like this:
#!/usr/bin/env ruby require 'rubygems' require 'smsify' smsify = SMSify.new("your_smsify_api_key") response = smsify.sendSMS("Your SMS MESSAGE", "61xxxxxxxxx")
Where 61xxxxxxxxx is the recipient’s mobile number in international format. For example, 61 is the country code for Australia, followed by 9 digits. That’s it! For example, you could save the script above as sms_alert.rb and call it directly from the bash status check script like so:
./sms_alert.rb
Make sure you make your file executable:
chmod +x sms_alert.rb
To check the number of SMS credits remaining on your account:
#!/usr/bin/env ruby require 'rubygems' require 'smsify' smsify = SMSify.new("your_api_key") smsify.getSMSCredits()