summaryrefslogblamecommitdiffstats
path: root/satellit_installer/static_files/system/usr/local/bin/netsetup
blob: a824739958edd9ef57cdbd805369ce034bcca2ce (plain) (tree)
1
2
3
4
5
6
7
8
9

           




                           

                                    
                                              
                         
                            
                          

     
 

                
                                                                 
            

                                                                                    
            



                 
                                                                                                                     


                                           

                              


                                    

                              


          

              
                                                                 
            


                                                                            
            
                                                                      

                                        


                 






















                                                                                                                 
            


                  
                                     
                                                               
                                                                                                             
                                    
                                                       
                                                                                                     





                                                
                                         

 
                       







                                                                        

                                           


                                 
            


                                                                                            





                                                                                                  



                                                                                                        


                    







                                                                        

                                         

                                                                                           


                       

                               

                      
                                      
                             
                                      
                            
                                                                        

                                                          
                                                                         
                           
                                                                                
                           
                                                
                               
                                                                                        



                                                                                           
                    







                                                               
                    

                                                                      
                                  
                            

                                                                                       




                                                              
            





                                                      

 


             
 

                               

          
      
 
#!/bin/bash

if [ "$UID" != 0 ]; then
	exec sudo "$0" "$@"
	exit 1
fi

DATUM=$(date +%Y%m%d_%H%M%S)
INTERFACES="/etc/network/interfaces"
ETHALIAS=$( ifconfig -a | grep -oEm1 '^e\w+' )
RESOLV="/etc/resolv.conf"
HOSTNAMEFILE="/etc/hostname"
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:]]+${ETHALIAS}[[:space:]]+inet[[:space:]]+dhcp" "$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 "$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 $ETHALIAS
		iface $ETHALIAS 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"

	echo "$HOSTNAME"							>  "$HOSTNAMEFILE"

	[ -n "$DOMAIN" ] && DOMAIN=".${DOMAIN}"
	sed "s/127.0.1.1.*/127.0.1.1\t${HOSTNAME}${DOMAIN}\t${HOSTNAME}/g" -i /etc/hosts --in-place=.alt

}

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 $ETHALIAS
		iface $ETHALIAS inet dhcp
		# Leaving /etc/resolv alone; pump/dhclient/whatever will take care of that.
	HIER
}

enter_values_static() {
	OLDHOSTNAME=$(hostname)
	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
		[ -z "$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 -n "Hostname - leere Eingabe für bestehenden Hostname $OLDHOSTNAME: "
		read HOSTNAME
		[ "$HOSTNAME" == "" ] && HOSTNAME="$OLDHOSTNAME"
		echo
		echo "# IP-Adresse            : $IPADRESS"
		echo "# Gateway               : $GATEWAY"
		echo "# Netzmaske             : $NETMASK"
		echo "# Domain                : $DOMAIN"
		echo "# Search domain         : $SEARCH"
		echo "# Primärer Nameserver   : $PRIMARYDNS"
		echo "# Sekundärer Nameserver : $SECONDARYDNS"
		echo "# Hostname              : $HOSTNAME"
		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