feat(powerman): manage Cyclades PM10i PDU via powerman on pfv-tsys1
Set up centralized PDU management for a Cyclades AlterPath PM10i (10
controllable AC outlets) connected to pfv-tsys1 via a Prolific USB-to-DB9
serial adapter. powermand is now listening on 0.0.0.0:10101, making the
PDU manageable over the network from any host on the tailnet.
Scripts (powerman/):
- discover.sh: gather USB adapter, powerman state, device definitions
- setup.sh: idempotent setup — udev rule (stable symlink by serial number),
powerman.conf with 10 outlet nodes, fix powermand dialout group, restart
service. Overridable via env vars for other hosts/PDU types
- test-pdu.sh: validate control by cycling outlet 10 off then on (8/8 pass)
- status.sh: quick PDU status check
Issues fixed during setup:
- Config pointed at /dev/ttyUSB0 but adapter is at /dev/ttyUSB1 (fixed
with udev symlink /dev/cyclades-pm10 pinned to adapter serial)
- powermand (user:powerman) lacked dialout group membership to open the
serial device (fixed with usermod + udev GROUP="dialout")
Validation: outlet 10 turned off (confirmed), turned on (confirmed), then
cycled. All 10 outlets currently ON and manageable.
TODO tracked for Friday: rename outlets from generic (outlet-1..10) to
match physical devices, and change PDU admin password from factory default.
💘 Generated with Crush
Assisted-by: Crush:glm-5.2
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
#!/usr/bin/bash
|
||||
#
|
||||
# powerman/discover.sh — gather USB-DB9 adapter + powerman state on a host
|
||||
#
|
||||
# Usage: PROX_HOST=pfv-tsys1 bash tests/remote.sh prox-file powerman/discover.sh
|
||||
#
|
||||
set -uo pipefail
|
||||
|
||||
echo "============================================"
|
||||
echo " PDU / Powerman Discovery"
|
||||
echo " Host: $(hostname)"
|
||||
echo " Date: $(date)"
|
||||
echo "============================================"
|
||||
|
||||
echo ""
|
||||
echo "=== 1. USB devices ==="
|
||||
lsusb 2>/dev/null || echo "(lsusb not available)"
|
||||
|
||||
echo ""
|
||||
echo "=== 2. USB-Serial adapters (ttyUSB*) ==="
|
||||
ls -la /dev/ttyUSB* 2>/dev/null || echo "(no /dev/ttyUSB* devices)"
|
||||
|
||||
echo ""
|
||||
echo "=== 3. USB-Serial kernel modules ==="
|
||||
lsmod | grep -iE 'usbserial|ftdi|pl2303|cp210|ch34|cdc_acm' 2>/dev/null || echo "(no relevant modules loaded)"
|
||||
|
||||
echo ""
|
||||
echo "=== 4. dmesg for USB serial (last 30 lines) ==="
|
||||
dmesg | grep -iE 'ttyUSB|usbserial|ftdi|pl2303|cp210|ch34|converter' | tail -30 2>/dev/null || echo "(no dmesg matches)"
|
||||
|
||||
echo ""
|
||||
echo "=== 5. All serial devices ==="
|
||||
ls -la /dev/ttyS* /dev/ttyUSB* /dev/ttyACM* 2>/dev/null || echo "(no serial devices found)"
|
||||
|
||||
echo ""
|
||||
echo "=== 6. Powerman installed? ==="
|
||||
dpkg -l powerman 2>/dev/null || echo "(powerman not installed)"
|
||||
which powerman 2>/dev/null || echo "(powerman binary not found)"
|
||||
which powermand 2>/dev/null || echo "(powermand binary not found)"
|
||||
|
||||
echo ""
|
||||
echo "=== 7. Powerman config files ==="
|
||||
ls -la /etc/powerman/ 2>/dev/null || echo "(no /etc/powerman/ directory)"
|
||||
ls -la /etc/powerman/*.dev 2>/dev/null || echo "(no .dev files)"
|
||||
cat /etc/powerman/powerman.conf 2>/dev/null || echo "(no powerman.conf)"
|
||||
|
||||
echo ""
|
||||
echo "=== 8. Available powerman device definitions ==="
|
||||
ls /usr/share/powerman/*.dev 2>/dev/null || ls /etc/powerman/*.dev 2>/dev/null || echo "(no device definitions found)"
|
||||
|
||||
echo ""
|
||||
echo "=== 9. Powermand service status ==="
|
||||
systemctl status powerman 2>/dev/null | head -10 || echo "(powerman service not found)"
|
||||
|
||||
echo ""
|
||||
echo "=== 10. Serial port test (quick probe of /dev/ttyUSB0) ==="
|
||||
if [ -e /dev/ttyUSB0 ]; then
|
||||
stty -F /dev/ttyUSB0 2>/dev/null && echo "(port exists and is configurable)" || echo "(port exists but stty failed)"
|
||||
# Try to read any pending output
|
||||
timeout 2 cat /dev/ttyUSB0 2>/dev/null | head -5 || echo "(no immediate output from port)"
|
||||
else
|
||||
echo "(no /dev/ttyUSB0)"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "============================================"
|
||||
echo " Discovery complete."
|
||||
echo "============================================"
|
||||
Reference in New Issue
Block a user