#!/usr/bin/env python3 """Read ban timing from fail2ban SQLite — called via sudo by www-data.""" import sqlite3, sys, os if len(sys.argv) < 3: sys.exit(1) jail = sys.argv[1] ip = sys.argv[2] db = '/var/lib/fail2ban/fail2ban.sqlite3' if not os.path.isfile(db): sys.exit(1) try: conn = sqlite3.connect(f'file:{db}?mode=ro', uri=True) cur = conn.execute( 'SELECT timeofban, bantime FROM bans WHERE jail=? AND ip=? ORDER BY timeofban DESC LIMIT 1', (jail, ip) ) row = cur.fetchone() conn.close() if row: print(f'{row[0]}|{row[1]}') except Exception: sys.exit(1)