blob: cb94ad02f5fa551cf0d090afa1952bd97447388c (
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 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
|