feat: add diagnostic and maintenance scripts for Pi-hole, Technitium, and Nginx Proxy Manager
This commit is contained in:
@@ -19,3 +19,4 @@ out, err = exec_cmd('k3s kubectl exec -n dns deploy/pihole -c pihole -- pihole-F
|
||||
print("Integrity:", out, "Err:", err)
|
||||
|
||||
client.close()
|
||||
|
||||
|
||||
10
scripts/check_ftl_log_spaceport.py
Normal file
10
scripts/check_ftl_log_spaceport.py
Normal file
@@ -0,0 +1,10 @@
|
||||
import paramiko
|
||||
|
||||
client = paramiko.SSHClient()
|
||||
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||
client.connect("140.44.4.41", username="root", key_filename=r"C:\Users\Snarf\.ssh\id_ed25519_snarfnet", timeout=10)
|
||||
|
||||
cmd = 'k3s kubectl exec -n dns deploy/pihole -c pihole -- grep -A 10 "Database version is 22" /var/log/pihole/FTL.log'
|
||||
stdin, stdout, stderr = client.exec_command(cmd)
|
||||
print("Spaceport:\n", stdout.read().decode())
|
||||
client.close()
|
||||
11
scripts/check_ftl_startup.py
Normal file
11
scripts/check_ftl_startup.py
Normal file
@@ -0,0 +1,11 @@
|
||||
import paramiko
|
||||
|
||||
client = paramiko.SSHClient()
|
||||
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||
client.connect("140.44.4.11", username="root", key_filename=r"C:\Users\Snarf\.ssh\id_ed25519_snarfnet", timeout=10)
|
||||
|
||||
cmd = 'k3s kubectl exec -n dns deploy/pihole -c pihole -- grep -B 20 "CRIT: Cannot initialize in-memory database" /var/log/pihole/FTL.log'
|
||||
stdin, stdout, stderr = client.exec_command(cmd)
|
||||
print(stdout.read().decode())
|
||||
client.close()
|
||||
|
||||
11
scripts/check_ftl_version.py
Normal file
11
scripts/check_ftl_version.py
Normal file
@@ -0,0 +1,11 @@
|
||||
import paramiko
|
||||
|
||||
client = paramiko.SSHClient()
|
||||
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||
client.connect("140.44.4.11", username="root", key_filename=r"C:\Users\Snarf\.ssh\id_ed25519_snarfnet", timeout=10)
|
||||
|
||||
cmd = 'k3s kubectl exec -n dns deploy/pihole -c pihole -- pihole-FTL sqlite3 /etc/pihole/pihole-FTL.db "SELECT * FROM ftl;"'
|
||||
stdin, stdout, stderr = client.exec_command(cmd)
|
||||
print(stdout.read().decode())
|
||||
client.close()
|
||||
|
||||
11
scripts/check_ftl_version_spaceport.py
Normal file
11
scripts/check_ftl_version_spaceport.py
Normal file
@@ -0,0 +1,11 @@
|
||||
import paramiko
|
||||
|
||||
client = paramiko.SSHClient()
|
||||
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||
client.connect("140.44.4.41", username="root", key_filename=r"C:\Users\Snarf\.ssh\id_ed25519_snarfnet", timeout=10)
|
||||
|
||||
cmd = 'k3s kubectl exec -n dns deploy/pihole -c pihole -- pihole-FTL sqlite3 /etc/pihole/pihole-FTL.db "SELECT * FROM ftl;"'
|
||||
stdin, stdout, stderr = client.exec_command(cmd)
|
||||
print("Spaceport:", stdout.read().decode())
|
||||
client.close()
|
||||
|
||||
13
scripts/check_network_table.py
Normal file
13
scripts/check_network_table.py
Normal file
@@ -0,0 +1,13 @@
|
||||
import paramiko
|
||||
|
||||
client = paramiko.SSHClient()
|
||||
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||
client.connect("140.44.4.11", username="root", key_filename=r"C:\Users\Snarf\.ssh\id_ed25519_snarfnet", timeout=10)
|
||||
|
||||
for tbl in ["network", "network_addresses"]:
|
||||
cmd = f'k3s kubectl exec -n dns deploy/pihole -c pihole -- pihole-FTL sqlite3 /etc/pihole/pihole-FTL.db "SELECT count(*) FROM {tbl};"'
|
||||
stdin, stdout, stderr = client.exec_command(cmd)
|
||||
print(f"{tbl} count:", stdout.read().decode().strip(), stderr.read().decode().strip())
|
||||
|
||||
client.close()
|
||||
|
||||
11
scripts/check_npm_ai_hosts.py
Normal file
11
scripts/check_npm_ai_hosts.py
Normal file
@@ -0,0 +1,11 @@
|
||||
import paramiko
|
||||
|
||||
client = paramiko.SSHClient()
|
||||
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||
client.connect("140.44.4.71", username="root", key_filename=r"C:\Users\Snarf\.ssh\id_ed25519_snarfnet", timeout=10)
|
||||
|
||||
cmd = 'python3 -c "import sqlite3; conn=sqlite3.connect(\'/var/lib/docker/volumes/nginx-proxy-manager_nginx-data/_data/database.sqlite\'); print(conn.execute(\'SELECT id, domain_names, forward_host, forward_port, enabled FROM proxy_host;\').fetchall())"'
|
||||
stdin, stdout, stderr = client.exec_command(cmd)
|
||||
print(stdout.read().decode())
|
||||
print(stderr.read().decode())
|
||||
client.close()
|
||||
14
scripts/check_technitium_shipyardcontrol.py
Normal file
14
scripts/check_technitium_shipyardcontrol.py
Normal file
@@ -0,0 +1,14 @@
|
||||
import requests
|
||||
import paramiko
|
||||
|
||||
# Let's inspect the technitium zone via SSH or API
|
||||
client = paramiko.SSHClient()
|
||||
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||
client.connect("140.44.4.11", username="root", key_filename=r"C:\Users\Snarf\.ssh\id_ed25519_snarfnet", timeout=10)
|
||||
|
||||
cmd = 'k3s kubectl exec -n dns deploy/technitium-dns -c technitium-dns -- find /etc/dns/zones -type f -exec grep -H "shipyardcontrol" {} + || true'
|
||||
stdin, stdout, stderr = client.exec_command(cmd)
|
||||
print("Zone file check:", stdout.read().decode())
|
||||
|
||||
client.close()
|
||||
|
||||
28
scripts/fix_ftl_db_version.py
Normal file
28
scripts/fix_ftl_db_version.py
Normal file
@@ -0,0 +1,28 @@
|
||||
import paramiko
|
||||
|
||||
client = paramiko.SSHClient()
|
||||
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||
client.connect("140.44.4.11", username="root", key_filename=r"C:\Users\Snarf\.ssh\id_ed25519_snarfnet", timeout=10)
|
||||
|
||||
# Check current version
|
||||
cmd = 'k3s kubectl exec -n dns deploy/pihole -c pihole -- pihole-FTL sqlite3 /etc/pihole/pihole-FTL.db "SELECT * FROM ftl WHERE id=0;"'
|
||||
stdin, stdout, stderr = client.exec_command(cmd)
|
||||
print("Before:", stdout.read().decode().strip())
|
||||
|
||||
# Update version to 21
|
||||
cmd = 'k3s kubectl exec -n dns deploy/pihole -c pihole -- pihole-FTL sqlite3 /etc/pihole/pihole-FTL.db "UPDATE ftl SET value=21 WHERE id=0;"'
|
||||
stdin, stdout, stderr = client.exec_command(cmd)
|
||||
print("Updated:", stdout.read().decode().strip(), stderr.read().decode().strip())
|
||||
|
||||
# Verify
|
||||
cmd = 'k3s kubectl exec -n dns deploy/pihole -c pihole -- pihole-FTL sqlite3 /etc/pihole/pihole-FTL.db "SELECT * FROM ftl WHERE id=0;"'
|
||||
stdin, stdout, stderr = client.exec_command(cmd)
|
||||
print("After:", stdout.read().decode().strip())
|
||||
|
||||
# Restart FTL or reload
|
||||
cmd = 'k3s kubectl exec -n dns deploy/pihole -c pihole -- pihole restartdns'
|
||||
stdin, stdout, stderr = client.exec_command(cmd)
|
||||
print("Restart output:", stdout.read().decode().strip())
|
||||
|
||||
client.close()
|
||||
|
||||
@@ -20,3 +20,4 @@ stdin, stdout, stderr = client.exec_command(cmd)
|
||||
print("Nginx reload:", stdout.read().decode().strip(), stderr.read().decode().strip())
|
||||
|
||||
client.close()
|
||||
|
||||
|
||||
12
scripts/test_pihole_user.py
Normal file
12
scripts/test_pihole_user.py
Normal file
@@ -0,0 +1,12 @@
|
||||
import paramiko
|
||||
|
||||
client = paramiko.SSHClient()
|
||||
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||
client.connect("140.44.4.11", username="root", key_filename=r"C:\Users\Snarf\.ssh\id_ed25519_snarfnet", timeout=10)
|
||||
|
||||
cmd = 'k3s kubectl exec -n dns deploy/pihole -c pihole -- su -s /bin/sh pihole -c "pihole-FTL sqlite3 /etc/pihole/pihole-FTL.db \'SELECT count(*) FROM query_storage;\'"'
|
||||
stdin, stdout, stderr = client.exec_command(cmd)
|
||||
print("Output:", stdout.read().decode())
|
||||
print("Error:", stderr.read().decode())
|
||||
client.close()
|
||||
|
||||
Reference in New Issue
Block a user