Files

35 lines
1.6 KiB
Bash

installed_pkgs() { dpkg-query -W -f '${db:Status-Abbrev} ${Package}\n' 2>/dev/null | awk '$1 ~ /^.i/ {print $2}' | sort -u; }
[ -e /sys/class/net/lab0 ] && refuse "an interface lab0 already exists; remove it first"
if command -v nmcli >/dev/null; then
systemctl is-active --quiet NetworkManager || refuse "NetworkManager is installed but not running; start it first"
nmcli -g NAME connection show | grep -qx office && refuse "a NetworkManager profile office already exists; delete it first"
nmcli -g connection.interface-name connection show 2>/dev/null | grep -qx lab0 && refuse "a NetworkManager profile for lab0 already exists; delete it first"
else
# Ubuntu Server: NetworkManager ships with every wired interface
# unmanaged unless netplan hands it over, so the connection stays
# with systemd-networkd.
installed_pkgs >"$LAB_STATE/pkgs-before"
pkg_install network-manager
comm -13 "$LAB_STATE/pkgs-before" <(installed_pkgs) >"$LAB_STATE/pkgs-added"
systemctl enable --now --quiet NetworkManager
for i in $(seq 20); do nmcli general >/dev/null 2>&1 && break; sleep 0.5; done
fi
cat >/etc/systemd/system/le-lab-lab0.service <<'UNIT'
[Unit]
Description=Spare interface lab0 for a LINUXexpert practice lab
Before=network-pre.target NetworkManager.service
Wants=network-pre.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/sh -c 'ip link show lab0 >/dev/null 2>&1 || ip link add lab0 type dummy'
ExecStop=/bin/sh -c 'ip link del lab0 2>/dev/null || true'
[Install]
WantedBy=multi-user.target
UNIT
systemctl daemon-reload
systemctl enable --now --quiet le-lab-lab0.service