1+ #! /usr/bin/env bash
2+ set -euo pipefail
3+
4+ # Require root
5+ if [[ " $EUID " -ne 0 ]]; then
6+ echo " This script must be run as root."
7+ exit 1
8+ fi
9+
10+ # Get interfaces excluding loopback
11+ mapfile -t interfaces < <( ip -o link show | awk -F' : ' ' {print $2}' | grep -v " ^lo$" )
12+
13+ echo " Available network interfaces:"
14+ echo " -----------------------------"
15+
16+ for i in " ${! interfaces[@]} " ; do
17+ printf " %d) %s\n" " $(( i+ 1 )) " " ${interfaces[$i]} "
18+ done
19+
20+ # #######################################
21+ # FIRST INTERFACE (POD)
22+ # #######################################
23+
24+ echo
25+ read -rp " Which interface will be connected to POD? (Enter number) " choice1
26+
27+ if ! [[ " $choice1 " =~ ^[0-9]+$ ]] || (( choice1 < 1 || choice1 > ${# interfaces[@]} )) ; then
28+ echo " Invalid selection."
29+ exit 1
30+ fi
31+
32+ POD_INTERFACE=" ${interfaces[$((choice1-1))]} "
33+
34+ echo
35+ read -rp " Enter IP address with CIDR mask for POD (e.g., 192.168.1.10/24): " POD_IP
36+
37+ if ! [[ " $POD_IP " =~ ^([0-9]{1,3}\. ){3}[0-9]{1,3}/([0-9]| [12][0-9]| 3[0-2])$ ]]; then
38+ echo " Invalid IP format."
39+ exit 1
40+ fi
41+
42+ echo
43+ echo " Configuring POD interface: $POD_INTERFACE "
44+
45+ ip addr flush dev " $POD_INTERFACE "
46+ ip addr add " $POD_IP " dev " $POD_INTERFACE "
47+ ip link set " $POD_INTERFACE " promisc on
48+ ip link set " $POD_INTERFACE " up
49+
50+ # #######################################
51+ # SECOND INTERFACE (HYPERVISOR-ROUTER / NAP)
52+ # #######################################
53+
54+ echo
55+ read -rp " Which interface will be connected to Hypervisor-Router/NAP? (Enter number) " choice2
56+
57+ if ! [[ " $choice2 " =~ ^[0-9]+$ ]] || (( choice2 < 1 || choice2 > ${# interfaces[@]} )) ; then
58+ echo " Invalid selection."
59+ exit 1
60+ fi
61+
62+ SECOND_INTERFACE=" ${interfaces[$((choice2-1))]} "
63+
64+ echo
65+ read -rp " Enter IP address with CIDR mask for Hypervisor-Router/NAP: " SECOND_IP
66+
67+ if ! [[ " $SECOND_IP " =~ ^([0-9]{1,3}\. ){3}[0-9]{1,3}/([0-9]| [12][0-9]| 3[0-2])$ ]]; then
68+ echo " Invalid IP format."
69+ exit 1
70+ fi
71+
72+ echo
73+ echo " Configuring Hypervisor-Router/NAP interface: $SECOND_INTERFACE "
74+
75+ ip addr flush dev " $SECOND_INTERFACE "
76+ ip addr add " $SECOND_IP " dev " $SECOND_INTERFACE "
77+ ip link set " $SECOND_INTERFACE " up
78+
79+ echo
80+ echo " Network configuration completed successfully."
0 commit comments