38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
import paramiko
|
|
|
|
nodes = {
|
|
"Node 1 (140.44.44.121)": "140.44.44.121",
|
|
"Node 2 (140.44.44.122)": "140.44.44.122",
|
|
"Node 3 (140.44.44.123)": "140.44.44.123",
|
|
"Node 4 (140.44.44.124)": "140.44.44.124",
|
|
}
|
|
|
|
for name, ip in nodes.items():
|
|
try:
|
|
c = paramiko.SSHClient()
|
|
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
|
c.connect(ip, username="root", password="Katzir476!", timeout=10)
|
|
|
|
# Check PCIe inventory for NVIDIA
|
|
stdin, stdout, stderr = c.exec_command("racadm hwinventory")
|
|
out = stdout.read().decode(errors="ignore")
|
|
|
|
gpus = []
|
|
for block in out.split("[InstanceID:"):
|
|
if "NVIDIA" in block or "Tesla" in block or "T4" in block:
|
|
lines = [l.strip() for l in block.splitlines() if any(k in l for k in ["DeviceDescription", "DeviceType", "FQDD", "PCI"])]
|
|
gpus.append(" | ".join(lines[:3]))
|
|
|
|
# Check Above 4G decoding
|
|
stdin, stdout, stderr = c.exec_command("racadm get bios.IntegratedDevices.MemOpMode || racadm get bios.IntegratedDevices.MemoryMappedIoAbove4GB")
|
|
a4g = stdout.read().decode(errors="ignore").strip()
|
|
|
|
print(f"=== {name} ===")
|
|
print(f" GPUs detected: {len(gpus)}")
|
|
for g in gpus:
|
|
print(f" {g}")
|
|
c.close()
|
|
except Exception as e:
|
|
print(f"=== {name} === ERROR: {e}")
|
|
|