· 7 years ago · Oct 27, 2018, 02:16 PM
1#! /usr/bin/python
2
3###############################################################################
4#
5# Version 0.1
6#
7###############################################################################
8
9import time
10import requests
11import smtplib
12
13
14# config, adjust these as per your need
15input_file = 'urls.txt'
16from_email = '****@gmail.com'
17from_name = '***'
18to_emails = [
19
20 '****@gmail.com'
21 ]
22to_names = [
23 'test1',
24 'test2'
25 ]
26gmail_id = '****@gmail.com'
27gmail_password = '****'
28
29message = "From: " + from_name + " <" + from_email + ">\n"
30message += "To: TO_NAME <TO_EMAIL>\n"
31message += "Subject: Instance #bit24 URL status code\n\n"
32
33
34f = open('urls.txt','r')
35URLS = f.readlines()
36f.close()
37
38
39###############################################################################
40# Don't edit below this line
41###############################################################################
42GREEN = '\033[92m'
43YELLOW = '\033[93m'
44RED = '\033[91m'
45ENDC = '\033[0m'
46
47def main():
48 while True:
49 print ("\nTesting URLs.", time.ctime())
50 checkUrls()
51 print ("Press CTRL+C to exit")
52 time.sleep(2) #Sleep 10 seconds
53
54
55def checkUrls():
56 for url in URLS:
57 status = "N/A"
58 try:
59 status = checkUrl(url)
60 except requests.exceptions.ConnectionError:
61 status = "DOWN"
62 sendmail(from_email, to_names, to_emails, message + url + "Status Code: " + status)
63 printStatus(url, status)
64 time.sleep(2)
65
66def checkUrl(url):
67 try:
68 r = requests.get(url)
69 return str(r.status_code)
70 except Exception as e:
71 print (RED + 'Exception:' + ' ' + url)
72 sendmail(from_email, to_names, to_emails, message + "Exception for url: " + url)
73
74def printStatus(url, status):
75 color=RED
76 if status != None:
77 if status == "200":
78 color=GREEN
79 sendmail(from_email, to_names, to_emails, message + url + "Status Code: OK - " + status)
80 elif status == "429":
81 sendmail(from_email, to_names, to_emails, message + url + "Status Code: Rate Limiting - " + status)
82 print (color+status+ENDC+' '+ url)
83
84def sendmail(sender, names, receivers, message):
85 smtpObj = smtplib.SMTP('smtp.gmail.com:587')
86 smtpObj.ehlo()
87 smtpObj.starttls()
88 smtpObj.login(gmail_id, gmail_password)
89 for i, mail in enumerate(receivers):
90 message1 = message.replace('TO_EMAIL', mail)
91 message2 = message1.replace('TO_NAME', names[i])
92 try:
93 smtpObj.sendmail(sender, mail, message2)
94 except smtplib.SMTPException as e:
95 print("Error: unable to send email", e)
96
97#
98# Main app
99#
100if name == 'main':
101 main()