Skip to content

Instantly share code, notes, and snippets.

@sivajankan
Last active October 23, 2015 20:47
Show Gist options
  • Save sivajankan/8278d75c39bc5a8260ae to your computer and use it in GitHub Desktop.
Save sivajankan/8278d75c39bc5a8260ae to your computer and use it in GitHub Desktop.
#!/usr/bin/ruby
require 'net/http'
require 'net/smtp'
require 'uri'
require 'yaml'
require 'logger'
#README
#FIELD NEEDS CHANGE - SEARCH AND REPLACE
#<email_id> - 2 entries
#<email_pwd>
#<web_url_with_http_or_https>
#<welcome_msg_of_the_default_loading_page>
#<to_admin_addr>
def check_webpage(web_url, logger)
begin
url = URI.parse(web_url)
net_conn = Net::HTTP.new(url.host, url.port)
net_conn.use_ssl = url.scheme == "https"
res = net_conn.get('/')
rescue Exception => e
logger.error("Pinging issue\n" + e.to_s)
return { code: res ? res.code : 500, error: e.to_s }
end
return { code: res.code, content: res.body, error: "" }
end
def send_gmail(to, msg, logger)
gmail_server, gmail_port, gmail_acc, gmail_pwd = "smtp.gmail.com", 587, "<email_id>@gmail.com", "<email_pwd>"
begin
smtp = Net::SMTP.new(gmail_server, 587)
smtp.enable_starttls #gmail needs this encryption
smtp.start("DOMAIN FILLER", gmail_acc, gmail_pwd, :login) do |s|
s.send_message(msg, gmail_acc, to)
end
rescue Exception => e
logger.error("Exception occured: " );
logger.error(e);
end
end
logger = Logger.new('website_checker.log', 'daily')
web_url = "<web_url_with_http_or_https>"
welcome_msg = "<welcome_msg_of_the_default_loading_page>"
server_online = false;
response = check_webpage(web_url, logger)
if (response[:code] == "200" && response[:content].include?(welcome_msg))
server_online = true
else
subject = "Ping failed - #{web_url}"
to_addr = "<to_admin_addr>"
msg = [
"From: WebMonitor <<email_id>@gmail.com>",
"To: Admin <#{to_addr}>",
"Subject: #{subject}",
"",
"Hi,",
"#{subject}",
"#{response[:error]}",
"",
"",
"Content:",
"#{response[:content]}"
].join("\r\n");
send_gmail(to_addr, msg, logger)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment