From 5e1c42a84fc00d47097e41f6fc1b5c15be8c8c64 Mon Sep 17 00:00:00 2001 From: Julian Meyer Date: Mon, 3 Jun 2024 17:18:14 +0200 Subject: [PATCH] change interface names --- proxmox/pin-interface-names.sh | 51 ++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 3 deletions(-) diff --git a/proxmox/pin-interface-names.sh b/proxmox/pin-interface-names.sh index 40eca83..7e17538 100644 --- a/proxmox/pin-interface-names.sh +++ b/proxmox/pin-interface-names.sh @@ -2,6 +2,7 @@ # Verzeichnis für die systemd-Netzwerk-Units output_dir="/etc/systemd/network" +interfaces_file="/etc/network/interfaces" # Überprüfen, ob das Ausgabe-Verzeichnis existiert, ansonsten erstellen if [ ! -d "$output_dir" ]; then @@ -11,18 +12,62 @@ fi # Alle Netzwerk-Interfaces auslesen und unerwünschte Interfaces herausfiltern interfaces=$(ls /sys/class/net | grep -Ev '^(lo|tap|vlan|vmbr|bonding|fw|veth)') +# Speichern der alten und neuen Interface-Namen in einer Assoziativen Liste +declare -A interface_map + +# Speichern der alten und neuen Bridge-Ports in einer Assoziativen Liste +declare -A bridge_port_map + # Für jedes Interface ein systemd-Netzwerk-File erstellen for interface in $interfaces; do mac_address=$(cat /sys/class/net/$interface/address) - file="$output_dir/10-net$interface.link" + # Neuer Interface-Name mit "net" am Anfang + new_interface_name="net$interface" + file="$output_dir/10-$new_interface_name.link" cat < $file [Match] MACAddress=$mac_address [Link] -Name=$interface +Name=$new_interface_name EOF echo "Datei erstellt: $file" + # Hinzufügen zur Assoziativen Liste + interface_map[$interface]=$new_interface_name done -echo "systemd-Netzwerk-Units wurden erfolgreich in $output_dir erstellt." \ No newline at end of file +echo "systemd-Netzwerk-Units wurden erfolgreich in $output_dir erstellt." + +# Aktualisieren der /etc/network/interfaces Datei +echo "Aktualisiere /etc/network/interfaces Datei..." +while IFS= read -r line; do + if [[ $line =~ ^bridge_ports ]]; then + # Extrahieren der Bridge-Ports + bridge_ports=$(echo "$line" | awk '{for (i=2;i<=NF;i++) print $i}') + new_bridge_ports="" + # Aktualisieren der Bridge-Ports + for port in $bridge_ports; do + if [[ -n ${interface_map[$port]} ]]; then + new_bridge_ports+=" ${interface_map[$port]}" + bridge_port_map[$port]=${interface_map[$port]} + else + new_bridge_ports+=" $port" + fi + done + echo "bridge_ports$new_bridge_ports" >> "$interfaces_file.new" + else + echo "$line" >> "$interfaces_file.new" + fi +done < "$interfaces_file" + +# Die neue Datei über die alte Datei kopieren +mv "$interfaces_file.new" "$interfaces_file" + +echo "/etc/network/interfaces Datei erfolgreich aktualisiert." + +# Ausgabe der aktualisierten Bridge-Ports +echo "Aktualisierte Bridge-Ports:" +for old_port in "${!bridge_port_map[@]}"; do + new_port=${bridge_port_map[$old_port]} + echo "$old_port -> $new_port" +done \ No newline at end of file