aboutsummaryrefslogtreecommitdiff
path: root/kvm-lab-status
blob: 23039954774f17fe93bbad92720c4abd26bd8e0a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/env bash
set -euo pipefail

URI="qemu:///system"
IMGROOT="/var/lib/libvirt/images"
BASEDIR="$IMGROOT/base"
LABDIR="$IMGROOT/lab"

hr() { printf '%*s\n' "${COLUMNS:-80}" '' | tr ' ' '-'; }

echo "KVM LAB STATUS"
hr
echo "Time: $(date -Is)"
echo "Host: $(hostname)"
echo

echo "Libvirt domains ($URI):"
hr
virsh -c "$URI" list --all || true
echo

echo "Lab VMs (names starting with 'lab'):"
hr
virsh -c "$URI" list --all | awk 'NR==1||NR==2{print;next} $2 ~ /^lab/ {print}' || true
echo

echo "Lab disk inventory ($LABDIR):"
hr
if [[ -d "$LABDIR" ]]; then
  sudo ls -lh --time-style=long-iso "$LABDIR" 2>/dev/null || ls -lh "$LABDIR"
else
  echo "Missing: $LABDIR"
fi
echo

echo "Base images ($BASEDIR):"
hr
if [[ -d "$BASEDIR" ]]; then
  ls -lh --time-style=long-iso "$BASEDIR" 2>/dev/null || ls -lh "$BASEDIR"
else
  echo "Missing: $BASEDIR"
fi
echo

echo "Selected base candidates:"
hr
TEMPLATE="$BASEDIR/debian13-template.qcow2"
LATEST_WORK01="$(ls -1t "$BASEDIR"/work01-base-*.qcow2 2>/dev/null | head -n 1 || true)"

if [[ -f "$TEMPLATE" ]]; then
  echo "template: $TEMPLATE"
else
  echo "template: MISSING ($TEMPLATE)"
fi

if [[ -n "$LATEST_WORK01" ]]; then
  echo "work01 (latest): $LATEST_WORK01"
else
  echo "work01 (latest): none found ($BASEDIR/work01-base-*.qcow2)"
fi
echo

echo "Libvirt networks:"
hr
virsh -c "$URI" net-list --all || true
echo