Skip to content

Instantly share code, notes, and snippets.

@dmc5179
Created February 1, 2021 18:29
Show Gist options
  • Save dmc5179/4d82399a13dea3859848215ad0e57d96 to your computer and use it in GitHub Desktop.
Save dmc5179/4d82399a13dea3859848215ad0e57d96 to your computer and use it in GitHub Desktop.
Creating a Bridge for VMs to communicate guest to host
#!/bin/bash
DEVICE=${1:-eth0}
BR_NAME=br-pub
ipv4_transfer=(
method
dns
addresses
gateway
routes
dhcp-hostname
dhcp-fqdn
)
declare -A extra_settings
extra_settings[bridge.stp]=no
[ $EUID -eq 0 ] || { echo "Please run as root." >&2 ; exit 1 ; }
set -ex
CONNECTION="$(nmcli d show ${DEVICE} | sed -n 's/GENERAL\.CONNECTION:\s\+\(\S.*\)/\1/p')"
nmcli c add type bridge con-name $BR_NAME ifname $BR_NAME
nmcli c down "$CONNECTION"
for setting in "${ipv4_transfer[@]}"; do
old=$(nmcli -g ipv4.$setting c show "$CONNECTION")
if [ -n "$old" ]; then
nmcli c mod $BR_NAME ipv4.$setting "$old"
fi
done
for setting in "${!extra_settings[@]}"; do
nmcli c mod $BR_NAME $setting ${extra_settings[$setting]}
done
nmcli c add type bridge-slave ifname $DEVICE master $BR_NAME
nmcli c up $BR_NAME
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment