diff options
Diffstat (limited to 'satellit_installer/static_files/netsetup')
-rwxr-xr-x | satellit_installer/static_files/netsetup | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/satellit_installer/static_files/netsetup b/satellit_installer/static_files/netsetup new file mode 100755 index 0000000..cb94ad0 --- /dev/null +++ b/satellit_installer/static_files/netsetup @@ -0,0 +1,164 @@ +#!/bin/bash + +DATUM=$(date +%Y%m%d_%H%M%S) +INTERFACES="/etc/network/interfaces" +RESOLV="/etc/resolv.conf" +SKRIPT=$(readlink -f "$0") +ERR=0 + +write_banner() { + echo + echo "Dieses Skript konfiguriert statische oder dynamische IP-Adressen." + echo "Wenn Sie unsicher sind, können Sie es auch später ausführen. Sie" + echo "finden dieses Skript unter $SKRIPT." + echo + echo "Bitte bedenken Sie, daß Sie das Netzwerk entweder von Hand neu" + echo "starten müssen (oder einfach rebooten), wenn Sie die Netzwerk-" + echo "konfiguration verändern." + echo + echo "Es wurde übrigens eine $TYPE IP-Adresse vorgefunden." + echo +} + + +detect_config() { + if [ "$(grep -c "iface eth. inet dhcp" /etc/network/interfaces)" -gt 0 ]; then + # dhcp detected, we presume + TYPE=dhcp-basierte + WUNSCH=statische + else + TYPE=statische + WUNSCH=dhcp-basierte + fi +} + +ask_config() { + echo + echo "Es wurde eine $TYPE IP-Adresse vorgefunden." + echo "Wollen Sie eine $WUNSCH IP konfigurieren (y)," + echo "hat sich das Skript geirrt, und Sie benötigen doch eine $TYPE IP (x)," + echo "oder möchten Sie gar nichts tun (a oder leere Eingabe)?" + echo + echo -n "Ihre Wahl - y, x oder a: " + read -n 1 config_me + if [ "$config_me" == "y" -o "$config_me" == "y" ]; then exit 0; fi +} + +decide_action() { + case "$config_me" in + y) backup_configs + if [ "$WUNSCH" == "statische" ]; then + enter_values_static + write_config_static + else + write_config_dyn + fi + ;; + x) backup_configs + if [ "$TYPE" == "statische" ]; then + enter_values_static + write_config_static + else + write_config_dyn + fi + ;; + *) echo "Ihre eingegebene Option $config_me wurde nicht erkannt - Neustart." + exec "$SKRIPT" + ;; + + +} + +backup_configs() { + if [ -f /etc/network/interfaces ]; then + cp -p "$INTERFACES" "$INTERFACES.${DATUM}" || \ + { echo "Could not $INTERFACES to backup location $INTERFACES.$DATUM - aborting."; \ + exit 1 ; } + cp -p "$RESOLV" "$RESOLV.${DATUM}" || \ + { echo "Could not $RESOLV to backup location $RESOLV.$DATUM - aborting."; \ + exit 1 ; } + fi +} + +restore_configs() { + cp -p "$INTERFACES.$DATUM" "$INTERFACES" + cp -p "$RESOLV.{DATUM}" "$RESOLV" +} + +write_config_static() { + echo "# This file was written by the satellite auto installer." > "$INTERFACES" + echo "# If any problems arise, copy $INTERFACES.${DATUM}." >> "$INTERFACES" + echo "# The loopback network interface" >> "$INTERFACES" + echo "auto lo" >> "$INTERFACES" + echo "iface lo inet loopback" >> "$INTERFACES" + echo "" >> "$INTERFACES" + echo "# Primary network interface" >> "$INTERFACES" + echo "auto eth0" >> "$INTERFACES" + echo "iface eth0 inet static" >> "$INTERFACES" + echo "address $ipadress" >> "$INTERFACES" + echo "gateway $gateway" >> "$INTERFACES" + echo "netmask $netmask" >> "$INTERFACES" + + echo "# This file was written by the satellite server install script." > "$RESOLV" + echo "# If any problems arise, copy $RESOLV.${DATUM}." >> "$RESOLV" + [ -n "$domain" ] && echo "domain $domain" >> "$RESOLV" + [ -n "$search" ] && echo "search $search" >> "$RESOLV" + echo "nameserver $primarydns" >> "$RESOLV" + [ -n "$secondarydns" ] && echo "nameserver $secondarydns" >> "$RESOLV" +} + +write_config_dyn() { + echo "# This file was written by the satellite auto installer." > "$INTERFACES" + echo "# If any problems arise, copy $INTERFACES.${DATUM}." >> "$INTERFACES" + echo "# The loopback network interface" >> "$INTERFACES" + echo "auto lo" >> "$INTERFACES" + echo "iface lo inet loopback" >> "$INTERFACES" + echo "" >> "$INTERFACES" + echo "# Primary network interface" >> "$INTERFACES" + echo "auto eth0" >> "$INTERFACES" + echo "iface eth0 inet dhcpauto eth0" >> "$INTERFACES" + # Leaving /etc/resolv alone; pump/dhclient/whatever will take care of that. +} + +enter_values_static() { + while [ "$entry" != "y" ] && [ "$entry" != "Y" ]; do + echo + echo -n "IP-Adress: " + read ipadress + echo -n "Gateway: " + read gateway + echo -n "Net mask - leave empty for 255.255.255.0: " + read netmask + [ "$netmask" == "" ] && netmask=255.255.255.0 + echo -n "Domain - leave empty if not wanted: " + read domain + echo -n "Search domain - leave empty if not wanted: " + read search + echo -n "Primary nameserver: " + read primarydns + echo -n "Secondary nameserver - leave empty if no secondary DNS: " + read secondarydns + echo + echo "# IP Adress : $ipadress" + echo "# Gateway : $gateway" + echo "# Net mask : $netmask" + echo "# Domain : $domain" + echo "# Search domain : $search" + echo "# Primary nameserver : $primarydns" + echo "# Secondary nameserver : $secondarydns" + echo + echo -n "Are those correct values? Press y or Y für yes, any other key for no: " + read -n 1 entry + echo + done + write_config_static +} + +detect_config +write_banner +ask_config + +decide_action # do the stuff! + +exit + |