feat: add automation scripts for NAS fixes, Authentik monitoring, and Technitium DNS management
This commit is contained in:
56
scripts/full_health_check.py
Normal file
56
scripts/full_health_check.py
Normal file
@@ -0,0 +1,56 @@
|
||||
import urllib.request
|
||||
import ssl
|
||||
import sys
|
||||
|
||||
sys.stdout.reconfigure(encoding='utf-8')
|
||||
|
||||
ctx = ssl.create_default_context()
|
||||
ctx.check_hostname = False
|
||||
ctx.verify_mode = ssl.CERT_NONE
|
||||
|
||||
class NoRedirectHandler(urllib.request.HTTPRedirectHandler):
|
||||
def redirect_request(self, req, fp, code, msg, headers, newurl):
|
||||
return None
|
||||
|
||||
opener = urllib.request.build_opener(NoRedirectHandler)
|
||||
|
||||
services = [
|
||||
("Pi-hole 1 (Aerodrome)", "https://pihole1.snarfnet.net/"),
|
||||
("Pi-hole 2 (Spaceport)", "https://pihole2.snarfnet.net/"),
|
||||
("Technitium DNS 1", "https://dns1.snarfnet.net/"),
|
||||
("Technitium DNS 2", "https://dns2.snarfnet.net/"),
|
||||
("Longhorn Aerodrome", "https://longhorn.aerodrome.snarfnet.net/"),
|
||||
("Semaphore UI", "https://semaphore.snarfnet.net/"),
|
||||
("Uptime Kuma", "https://uptime.snarfnet.net/"),
|
||||
("Synology SN-NAS", "https://sn-nas.snarfnet.net/"),
|
||||
("Synology SnarfNAS", "https://snarfnas.snarfnet.net/"),
|
||||
]
|
||||
|
||||
print("=================================================================")
|
||||
print(" SNARFNET INFRASTRUCTURE HEALTH CHECK ")
|
||||
print("=================================================================")
|
||||
|
||||
all_ok = True
|
||||
for name, url in services:
|
||||
req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"})
|
||||
try:
|
||||
resp = opener.open(req, timeout=8)
|
||||
print(f" [PASS] {name:<22} | Status: {resp.status} {resp.reason}")
|
||||
except urllib.error.HTTPError as e:
|
||||
loc = e.headers.get('Location', '')
|
||||
if loc:
|
||||
loc_summary = loc.split('?')[0]
|
||||
print(f" [PASS] {name:<22} | Status: {e.code} -> Redirects to {loc_summary}")
|
||||
else:
|
||||
print(f" [PASS] {name:<22} | Status: {e.code} {e.reason}")
|
||||
except Exception as e:
|
||||
print(f" [FAIL] {name:<22} | Error: {e}")
|
||||
all_ok = False
|
||||
|
||||
print("=================================================================")
|
||||
if all_ok:
|
||||
print("ALL SERVICES OPERATIONAL & VERIFIED HEALTHY")
|
||||
else:
|
||||
print("SOME CHECKS REPORTED ISSUES")
|
||||
print("=================================================================")
|
||||
|
||||
Reference in New Issue
Block a user