feat: add infrastructure automation and diagnostic scripts for Zabbix, Nginx, and Authentik
This commit is contained in:
@@ -1,35 +1,32 @@
|
||||
import paramiko
|
||||
import paramiko, os
|
||||
|
||||
c = paramiko.SSHClient()
|
||||
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||
c.connect("140.44.4.71", username="root", key_filename=r'C:\Users\Snarf\.ssh\id_ed25519_snarfnet', timeout=10)
|
||||
|
||||
# Create /data/topology directory on host
|
||||
c.exec_command("mkdir -p /var/lib/docker/volumes/nginx-proxy-manager_nginx-data/_data/topology")
|
||||
sftp = c.open_sftp()
|
||||
|
||||
# Read topology files locally
|
||||
with open('docs/snarfnet_homelab_topology.html', 'r', encoding='utf-8') as f:
|
||||
html_data = f.read()
|
||||
remote_dir = "/var/lib/docker/volumes/nginx-proxy-manager_nginx-data/_data/topology"
|
||||
c.exec_command(f"mkdir -p {remote_dir}")
|
||||
|
||||
with open('docs/snarfnet_homelab_topology.png', 'rb') as f:
|
||||
png_data = f.read()
|
||||
local_html = os.path.abspath("docs/snarfnet_homelab_topology.html")
|
||||
local_png = os.path.abspath("docs/snarfnet_homelab_topology.png")
|
||||
|
||||
# Send html
|
||||
stdin, stdout, stderr = c.exec_command("cat > /var/lib/docker/volumes/nginx-proxy-manager_nginx-data/_data/topology/snarfnet_homelab_topology.html")
|
||||
stdin.write(html_data)
|
||||
stdin.close()
|
||||
stdout.read()
|
||||
print(f"Uploading HTML ({os.path.getsize(local_html)} bytes)...")
|
||||
sftp.put(local_html, f"{remote_dir}/snarfnet_homelab_topology.html")
|
||||
|
||||
# Send png
|
||||
stdin, stdout, stderr = c.exec_command("cat > /var/lib/docker/volumes/nginx-proxy-manager_nginx-data/_data/topology/snarfnet_homelab_topology.png")
|
||||
stdin.write(png_data)
|
||||
stdin.close()
|
||||
stdout.read()
|
||||
print(f"Uploading PNG ({os.path.getsize(local_png)} bytes)...")
|
||||
sftp.put(local_png, f"{remote_dir}/snarfnet_homelab_topology.png")
|
||||
|
||||
# Verify files inside NPM container
|
||||
cmd = "docker exec $(docker ps -q --filter name=nginx-proxy-manager_app) ls -la /data/topology"
|
||||
_, o, e = c.exec_command(cmd)
|
||||
print("Files inside NPM container at /data/topology:\n" + o.read().decode())
|
||||
print("Stderr:\n" + e.read().decode())
|
||||
sftp.close()
|
||||
|
||||
# Verify files inside container
|
||||
stdin, stdout, stderr = c.exec_command("docker exec $(docker ps -q --filter name=nginx-proxy-manager_app) ls -la /data/topology")
|
||||
print("Container /data/topology:")
|
||||
print(stdout.read().decode())
|
||||
|
||||
# Check md5sum locally and remotely
|
||||
stdin, stdout, stderr = c.exec_command(f"md5sum {remote_dir}/*")
|
||||
print("Remote md5sum:\n", stdout.read().decode())
|
||||
|
||||
c.close()
|
||||
|
||||
Reference in New Issue
Block a user