#!/usr/bin/python3 """ smells like updog in here generates an email for sendmail to notify me if all my websites are up, or if one or more of them is down. "up" means http response is 200. ./up_checker.py | sendmail user@email.com authored: Jun 15 2022; spokane valley, wa jordyn """ from collections import namedtuple import time import requests Status = namedtuple('Status', ['website', 'status']) websites = [ "https://queerscompute.gay/", "https://jordandashel.com/", "https://acrossthecountryin90days.com/", "https://4-letters.net/" ] def website_is_up(website): return website.status == 200 def website_status(website): try: response = requests.head(website) status = response.status_code return Status(website, status) except: return Status(website, None) statuses = [website_status(website) for website in websites] all_up = all([website_is_up(website) for website in statuses]) report = "" for status in statuses: website_name = str.split(status.website, "://")[1] website_name = website_name[:-1] report += f'{website_name:.<40} {"up" if website_is_up(status) else "DOWN"}\n' email = f"""Subject: websites are {"up" if all_up else "DOWN"} From: robot.dashel@gmail.com Content-Type: text/html; charset="utf8"
all up? {all_up}. reporting at {time.strftime("%A %B %d %Y, %X %Z")} from squidward at bikinib: {report}""" print(email)