Python Monitor a Web Page

Python provides smtplib module, which defines an SMTP client session object that can be used to send mail to any Internet machine with an SMTP or ESMTP listener daemon.


import requests
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

def SendEmail():
    host = "SMTP-SERVER"
    sender = "info@bangtech.com"
    receivers = "webmaster@bangtech.com"
    subject = "The web site may be down!"

    #Establish SMTP Connection
    #oSmtp = smtplib.SMTP('smtp.gmail.com', 587)
    oSmtp = smtplib.SMTP(host)

    #Start TLS based SMTP Session
    #oSmtp.starttls() 

    #Login Using Your Email ID & Password
    #oSmtp.login("", "")

    #To Create Email Message in Proper Format
    msg = MIMEMultipart()

    #Setting Email Parameters
    msg['From'] = sender
    msg['To'] = receivers
    msg['Subject'] = subject

    #Email Body Content
    message = """
	Hi All,
    Please check the web site
    """
    #Add Message To Email Body
    msg.attach(MIMEText(message, 'html'))

    #To Send the Email
    try:
       oSmtp.send_message(msg)        
       print ("Successfully sent email")
    except SMTPException:
       print ("Error: unable to send email")

    #Terminating the SMTP Session
    oSmtp.quit()

def MonitoWeb(piUrl, piKeyword):
    nCode = 0
    resp = requests.get(piUrl)
    if resp.ok:
        sHtml = resp.text
        if piKeyword in sHtml:
           print ("We've found the string!")
        else:
           message = "SOLR may be down!"
           print (message)
           nCode = -1
    else:
        print ("Boo! {}".format(resp.status_code))
        print (resp.text)
        nCode = -1

    return nCode


sUrl = 'https://www.bangtech.com'
sKeyword = "bangtech"

resp = MonitoWeb(sUrl, sKeyword)
if resp != 0:
    time.sleep(1) # Sleep 1 seconds
    resp = MonitoWeb(sUrl, sKeyword)
    if resp != 0:
       message = "SOLR may be down twice!"
       print (message)
       SendEmail()