Files
ultix/14-capture-state.sh
T
mrcharles 46fe0cb6a5 Rebuild runbook + state capture + docs sync to current reality (#615)
REBUILD.md maps a full rebuild (PVE qm spec incl. nested-virt flag,
guest OS/accounts/dotfiles bootstrap, script order, package baseline,
verification checklist). 14-capture-state.sh regenerates docs/state
snapshots (guest apt/units/sysctl/fstab/docker + PVE 5111 config).
Docs sync: stale multiqueue-owed text removed from NEXT/REPORT/RUNBOOK;
README script list + open-work list current.

Details: https://projects.knownelement.com/issues/615
2026-09-01 13:31:38 -05:00

50 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
# 14-capture-state.sh — snapshot guest + PVE state for rebuild docs (#615)
# Read-only; regenerates docs/state/* (stable names, diff-friendly).
# Runs as reachableceo on the workstation; uses the two root ssh paths.
set -euo pipefail
cd "$(dirname "$0")"
OUT=docs/state
GUEST_SSH="timeout 60 ssh root@100.101.187.119" # this VM, privileged
PVE_SSH="timeout 60 ssh root@100.87.135.12" # pfv-tsys5
mkdir -p "$OUT"
echo "== guest: packages"
apt-mark showmanual | sort > "$OUT/guest-apt-manual.txt"
dpkg -l | tail -n +6 | wc -l > "$OUT/guest-dpkg-count.txt"
timeout 30 ssh root@100.101.187.119 'apt-cache policy docker-ce docker.io 2>/dev/null | grep -E "^[a-z]|Installed|Candidate" | head -8' > "$OUT/guest-docker-pkg.txt" 2>&1 || true
echo "== guest: users/groups"
timeout 30 ssh root@100.101.187.119 'getent passwd | awk -F: "\$3>=1000 && \$3<65534"; echo ---; for u in reachableceo reachableceo-offstage; do id $u; done' > "$OUT/guest-users.txt"
echo "== guest: units + sysctl + fstab"
timeout 60 ssh root@100.101.187.119 '
systemctl list-unit-files --state=enabled | sort;
echo ===CUSTOM-UNITS;
find /etc/systemd/system -maxdepth 2 \( -type f -o -type l \) | sort;
echo ===SYSCONTROL;
for f in /etc/sysctl.d/*.conf; do echo "-- $f"; cat "$f"; done;
echo ===FSTAB;
cat /etc/fstab;
echo ===SUDOERS;
ls -la /etc/sudoers.d/;
echo ===XRDP-DROPIN;
cat /etc/systemd/system/xrdp.service.d/*.conf 2>/dev/null' > "$OUT/guest-system.txt"
echo "== guest: disks + docker"
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT > "$OUT/guest-disks.txt"
df -h | grep -vE "tmpfs|udev|overlay|squashfs" >> "$OUT/guest-disks.txt"
{ docker images --format "{{.Repository}}:{{.Tag}} {{.Size}}"; echo ---; docker ps -a --format "{{.Names}} {{.Image}} {{.Status}}"; } > "$OUT/guest-docker.txt" 2>/dev/null || echo "docker unavailable" > "$OUT/guest-docker.txt"
echo "== PVE: VM 5111 + host"
timeout 60 ssh -o ConnectTimeout=10 root@100.87.135.12 '
echo "=== qm config 5111 (live)"; qm config 5111 --current 2>/dev/null || qm config 5111;
echo "=== qm list"; qm list;
echo "=== storage.cfg"; cat /etc/pve/storage.cfg;
echo "=== pool usage"; df -h /mnt/nvme /mnt/ssd2 /mnt/pfv-tsys5/ssd 2>/dev/null;
echo "=== host"; grep -m1 "model name" /proc/cpuinfo; free -g | head -2; uname -r;
echo "=== nested"; cat /sys/module/kvm_intel/parameters/nested' > "$OUT/pve-5111.txt" || echo "PVE host unreachable — rerun later" > "$OUT/pve-5111.txt"
echo "== done: $(ls "$OUT" | wc -l) files in $OUT/"
ls -la "$OUT"