-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathhackenv_createbridge
executable file
·60 lines (47 loc) · 1.43 KB
/
hackenv_createbridge
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
#!/usr/bin/env bash
set -o errexit
set -o errtrace
datahome="${XDG_DATA_HOME:-$HOME/.local/share}"
readonly datahome="$datahome/hackenv"
readonly networkname='default'
readonly interfacename='virbr0'
if_network_exists() {
sudo virsh net-list --all --name | grep "^$networkname\$" > /dev/null
}
# https://stackoverflow.com/a/52814732
create_network() {
printf "Creating XML network description...\n" >&2
cat <<- EOF > "$datahome/network.xml"
<network>
<name>$networkname</name>
<bridge name="$interfacename"/>
<forward/>
<ip address="192.168.122.1" netmask="255.255.255.0">
<dhcp>
<range start="192.168.122.2" end="192.168.122.254"/>
</dhcp>
</ip>
</network>
EOF
printf "Define the network...\n" >&2
sudo virsh net-define "$datahome/network.xml"
printf "Start the network...\n" >&2
sudo virsh net-start "$networkname"
printf "Flag the network to automatically start on boot...\n" >&2
sudo virsh net-autostart "$networkname"
if ! grep -q "allow $interfacename"; then
sudo mkdir -p /etc/qemu
echo "allow $interfacename" | sudo tee -a /etc/qemu/bridge.conf
sudo chown -R :kvm /etc/qemu
sudo chmod 640 /etc/qemu/bridge.conf
fi
}
if_network_exists &&
printf "Network already exists; exiting...\n" >&2 &&
exit 0
create_network
printf "Verify that the network was created... " >&2
if_network_exists &&
printf "success" >&2 ||
printf "failure" >&2
printf "!\n" >&2