import paramiko import sys sys.stdout.reconfigure(encoding='utf-8') KEY_FILE = r'C:\Users\Snarf\.ssh\id_ed25519_snarfnet' spaceport_nodes = [ ('sninfr0lnxctl01', '140.44.4.41'), ('sninfr0lnxctl02', '140.44.4.42'), ('sninfr0lnxctl03', '140.44.4.43'), ('sninfr0lnxctl04', '140.44.4.44'), ('sninfr0lnxwrk01', '140.44.4.51'), ('sninfr0lnxwrk02', '140.44.4.52'), ('sninfr0lnxwrk03', '140.44.4.53'), ('sninfr0lnxwrk04', '140.44.4.54'), ('sninfr0lnxwrk05', '140.44.4.55'), ('sninfr0lnxwrk06', '140.44.4.56') ] for name, ip in spaceport_nodes: try: ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(ip, username='root', key_filename=KEY_FILE, timeout=5) stdin, stdout, stderr = ssh.exec_command('apt list --upgradable 2>/dev/null | grep -v "Listing" | wc -l') cnt = stdout.read().decode().strip() print(f"[{name}] ({ip}): {cnt} packages upgradeable") ssh.close() except Exception as e: print(f"[{name}] ({ip}): Error connecting: {e}")