Files
proxmox/scripts/audit-ip-conflicts-all-hosts.sh.bak

33 lines
992 B
Bash
Raw Permalink Normal View History

#!/usr/bin/env bash
# Audit IP conflicts across all Proxmox hosts
# Outputs: vmid|ip|host
HOSTS="192.168.11.10 192.168.11.11 192.168.11.12"
TMPF=$(mktemp)
trap "rm -f $TMPF" EXIT
for host in $HOSTS; do
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 root@$host "
for vmid in \$(pct list 2>/dev/null | awk 'NR>1{print \$1}'); do
pct config \$vmid 2>/dev/null | grep -oE 'ip=[0-9.]+/[0-9]+' | sed 's|ip=||;s|/.*||' | while read ip; do
echo \"\$vmid|\$ip|$host\"
done
done
" 2>/dev/null >> "$TMPF"
done
echo "=== All VMID|IP|Host ==="
sort -t'|' -k2,2 "$TMPF"
echo ""
echo "=== Duplicate IPs (conflicts) ==="
awk -F'|' '{ips[$2]=ips[$2] ? ips[$2] " + " $1"@"$3 : $1"@"$3; count[$2]++}
END {for (ip in count) if (count[ip]>1) print ip " -> " ips[ip]}' "$TMPF" | sort -V || echo "None found"
echo ""
echo "=== Invalid IPs (.0 or .255) ==="
awk -F'|' '{
split($2,a,".");
if (a[4]=="0" || a[4]=="255") print $1, $2, $3
}' "$TMPF" || echo "None found"