summaryrefslogblamecommitdiffstats
path: root/satellit_installer/static_files/netsetup
blob: b7188198b62a8d917d53938ddb1e76e57777ee04 (plain) (tree)
1
2
3
4
5
6
7
8
9
10




                                    
                          

     

                
                                                                 
            

                                                                                    
            



                 
                                                                                                                        


                                           

                              


                                    

                              


          

              
                                                                 
            


                                                                            
            


                                                                      



                            

                                      





                                                             


                                      






                                                           

                                  


                                                                                                 

                                      
            



                                               
                                                               
                                                                                                             
                                    
                                                       
                                                                                                     





                                                
                                         

 
                       













                                                                        




                                                                                            
                                                                                                                    



                                                                                            











                                                                                           


                       


                      
                                      
                             
                                      
                            
                                                                        

                                                             
                                                                         
                           
                                                                                
                           
                                                
                               
                                                                                        









                                                             










                                                                                       
            





                                                      

 


             
 

                               

          
      
 
#!/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