blob: b7188198b62a8d917d53938ddb1e76e57777ee04 (
plain) (
tree)
|
|
#!/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 das Netzwerk-Interface."
echo
echo "Wenn Sie die Netzwerkkonfiguration ändern, sollten Sie anschließend"
echo "den Server rebooten."
echo
}
detect_config() {
if grep -q -E "^[[:space:]]*iface[[:space:]]+eth0[[:space:]]+inet[[:space:]]+dhcp" /etc/network/interfaces; then
# dhcp detected, we presume
TYPE=dhcp-basierte
WUNSCH=statische
TOUCHE_TYPE=d
TOUCHE_DESIR=s
else
TYPE=statische
WUNSCH=dhcp-basierte
TOUCHE_TYPE=s
TOUCHE_DESIR=d
fi
}
ask_config() {
echo
echo "Es ist aktuell eine $TYPE IP-Adresse konfiguriert."
echo
echo "Wollen Sie eine $WUNSCH IP konfigurieren (${TOUCHE_DESIR}),"
echo "möchten Sie die $TYPE IP neu konfigurieren (${TOUCHE_TYPE}),"
echo "oder möchten Sie gar nichts tun (leere Eingabe)?"
echo
echo -n "Ihre Wahl? [${TOUCHE_DESIR}/${TOUCHE_TYPE}/nichts]: "
read config_me
[ "$config_me" == "" ] && exit 0
}
decide_action() {
case "$config_me" in
${TOUCHE_DESIR}*)
backup_configs
if [ "$WUNSCH" == "statische" ]; then
enter_values_static
write_config_static
else
write_config_dyn
fi
;;
${TOUCHE_TYPE}*)
backup_configs
if [ "$TYPE" == "statische" ]; then
enter_values_static
write_config_static
else
write_config_dyn
fi
;;
*)
echo; echo
echo "Ihre eingegebene Option $config_me wurde nicht erkannt - Neustart."
echo
sleep 1
exec "$SKRIPT"
;;
esac
}
backup_configs() {
if [ -f /etc/network/interfaces ]; then
cp -p "$INTERFACES" "$INTERFACES.${DATUM}" || \
{ echo "Konnte Datei $INTERFACES nicht nach $INTERFACES.$DATUM sichern - Abbruch."; \
exit 1 ; }
cp -p "$RESOLV" "$RESOLV.${DATUM}" || \
{ echo "Konnte Datei $RESOLV nicht nach $RESOLV.$DATUM sichern - Abbruch."; \
exit 1 ; }
fi
}
restore_configs() {
cp -p "$INTERFACES.$DATUM" "$INTERFACES"
cp -p "$RESOLV.{DATUM}" "$RESOLV"
}
write_config_static() {
cat > "$INTERFACES" <<-HIER
# This file was written by the satellite auto installer.
# If any problems arise, copy $INTERFACES.${DATUM}.
# The loopback network interface
auto lo
iface lo inet loopback
# Primary network interface
auto eth0
iface eth0 inet static
address $ipadress
gateway $gateway
netmask $netmask
HIER
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"
[ -n "$primarydns" ] && echo "nameserver $primarydns" >> "$RESOLV"
[ -n "$secondarydns" ] && echo "nameserver $secondarydns" >> "$RESOLV"
}
write_config_dyn() {
cat > "$INTERFACES" <<-HIER
# This file was written by the satellite auto installer.
# If any problems arise, copy $INTERFACES.${DATUM}.
# The loopback network interface
auto lo
iface lo inet loopback
# Primary network interface
auto eth0
iface eth0 inet dhcp
# Leaving /etc/resolv alone; pump/dhclient/whatever will take care of that.
HIER
}
enter_values_static() {
unset entry
while true; do
echo
echo -n "IP-Adresse: "
read ipadress
echo -n "Gateway: "
read gateway
echo -n "Netzmaske - leere Eingabe für 255.255.255.0: "
read netmask
[ "$netmask" == "" ] && netmask=255.255.255.0
echo -n "Domain - leere Eingabe, wenn nicht erwünscht: "
read domain
echo -n "Search domain - leere Eingabe, wenn nicht erwünscht: "
read search
echo -n "Primärer Nameserver: "
read primarydns
echo -n "Sekundärer Nameserver - Leere Eingabe, wenn nicht vorhanden: "
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
while true; do
echo -n "Sind diese Eingaben korrekt? [J/n]: "
read entry
echo
[[ -z "$entry" || "$entry" == j* || "$entry" == J* ]] && return
if [[ "$entry" == n* || "$entry" == N* ]]; then
echo "Neustart der Eingabe..."
echo
break
fi
done
done
}
last_words() {
echo
echo "Einträge geschrieben... beende Skript."
echo
}
detect_config
write_banner
ask_config
decide_action # do the stuff!
last_words
exit 0
|