#!/bin/bash # garage-pdu-relay: expose APC AP7830 metered output current via snmpd extend. # # Relay pattern (founder ruling 2026-09-02): the garage PDU speaks SNMPv1 # only, walks die on its old AOS, and its ACL admits the LibreNMS VM vantage. # This relay runs ON tsys-librenms; HA polls the relay via the fleet snmpd # extend (same rails as drac-extend). Output: "output_amps ". # # Deploy target: tsys-librenms:/usr/local/bin/garage-pdu-relay ONLY (relay # host — not a per-host agent). snmpd.conf line on the relay host: # extend garagepdu /usr/local/bin/garage-pdu-relay # snmpd ACL must admit the pfv-bms LAN + Tailscale IPs as query sources # (rocommunity kn3lmgmt 192.168.3.12 / 100.67.108.125 as of 2026-09-03). # # Codified 2026-09-03 [#733]: was deployed manually 2026-09-02; hardened # with explicit snmpget timeout/retry so a dark PDU answers in ~2s instead # of ~6s and cannot pile up long-running children under HA's poll cadence. set -euo pipefail PDU_HOST="${PDU_HOST:-pfv-garage-pdu-1.knel.net}" COMMUNITY="${PDU_COMMUNITY:-kn3lmgmt}" OID=".1.3.6.1.4.1.318.1.1.12.2.3.1.1.2.1" raw=$(snmpget -v1 -c "$COMMUNITY" -t 2 -r 1 -On -Ov "$PDU_HOST" "$OID" 2>/dev/null \ | grep -oE '[0-9]+$') || true if [ -z "${raw:-}" ]; then echo "output_amps unavailable" exit 0 fi awk -v t="$raw" 'BEGIN { printf "output_amps %.1f\n", t/10 }'