#!/usr/bin/env bash set -euo pipefail EXCLUDE_REGEX='^(KCSW-WSNOC|KCSW-WSP|RCPT-WSNOC|RCPT-WSP)$' ALL_BRIDGES=(br1 br2 br3) EXCLUDED_BRIDGES=(br1) for vm in $(virsh list --all --name | sed '/^$/d'); do state="$(virsh domstate "$vm" | tr -d '\r')" echo "Processing $vm (state: $state)" if [[ "$vm" =~ $EXCLUDE_REGEX ]]; then echo " (VM is excluded from br2/br3; will attach br1 only)" BRIDGES=("${EXCLUDED_BRIDGES[@]}") else BRIDGES=("${ALL_BRIDGES[@]}") fi for br in "${BRIDGES[@]}"; do if virsh domiflist "$vm" 2>/dev/null | awk '{print $3}' | grep -qx "$br"; then echo " - $br already present on $vm (skipping)" continue fi if [[ "$state" == "running" ]]; then echo " + Attaching bridge $br to $vm (live + config)" virsh attach-interface "$vm" --type bridge --source "$br" --model virtio --live --config else echo " + Attaching bridge $br to $vm (config only)" virsh attach-interface "$vm" --type bridge --source "$br" --model virtio --config fi done done echo "Done."