27 lines
1.1 KiB
Python
27 lines
1.1 KiB
Python
import paramiko
|
|
import sys
|
|
import yaml
|
|
|
|
sys.stdout.reconfigure(encoding='utf-8')
|
|
|
|
key_path = r"C:\Users\Snarf\.ssh\id_ed25519_snarfnet"
|
|
client = paramiko.SSHClient()
|
|
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
|
|
|
client.connect("140.44.4.11", username="root", key_filename=key_path, timeout=10)
|
|
stdin, stdout, stderr = client.exec_command("KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl get clusters.management.cattle.io -o yaml")
|
|
data = yaml.safe_load(stdout.read().decode('utf-8'))
|
|
client.close()
|
|
|
|
for item in data.get('items', []):
|
|
name = item.get('metadata', {}).get('name')
|
|
disp = item.get('spec', {}).get('displayName')
|
|
print(f"\n==========================================")
|
|
print(f"Cluster: {disp} ({name})")
|
|
print(f"==========================================")
|
|
conditions = item.get('status', {}).get('conditions', [])
|
|
for c in conditions:
|
|
if c.get('status') != 'True' or c.get('type') in ['Ready', 'Connected']:
|
|
print(f" [{c.get('type')}]: status={c.get('status')} reason={c.get('reason')} msg={c.get('message')}")
|
|
|