Skip to content

Instantly share code, notes, and snippets.

@doofusdavid
Created March 1, 2021 23:12
Show Gist options
  • Save doofusdavid/d065b4541c74829fee3763d7ca3097eb to your computer and use it in GitHub Desktop.
Save doofusdavid/d065b4541c74829fee3763d7ca3097eb to your computer and use it in GitHub Desktop.
#!/usr/bin/env python3
from airtable import Airtable
import os, glob, json
# Debugging
#folder = "./monit-sites/"
folder = '/etc/monit/conf-available'
scriptsfolder = '/opt/monit-scripts/'
try:
airtable = Airtable("appndkAOJllcTcySJ", "Sites", "XXXXXXXXXXX")
sites = airtable.get_all(view="All Sites", fields=['Site Name'])
with open(os.path.join(scriptsfolder,'domains.txt'), 'w') as domains:
json.dump(sites, domains)
if(len(sites) > 100) and os.path.isfile(os.path.join(folder, "site-uptime.conf")):
os.remove(os.path.join(folder, "site-uptime.conf"))
with open(os.path.join(scriptsfolder,'monit-host.conf.template')) as hostTemplate, \
open(os.path.join(scriptsfolder,'monit-subfolder.conf.template')) as subfolderTemplate, \
open(os.path.join(scriptsfolder,'domains.txt')) as domains:
sites = json.load(domains)
filename = os.path.join(folder,'site-uptime.conf')
with open(filename, 'w') as outf:
for site in sites:
domain = site['fields']["Site Name"]
if "/" in domain:
host, subfolder = domain.split("/")
for line in subfolderTemplate:
outf.write(line.replace('DOMAIN',domain).replace('HOST',host).replace('SUBFOLDER',subfolder))
subfolderTemplate.seek(0)
else:
for line in hostTemplate:
outf.write(line.replace('DOMAIN',domain))
hostTemplate.seek(0)
except:
print("An Error Occurred populating the site list for M/Monit")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment