summaryrefslogtreecommitdiffstats
path: root/satellit_installer/static_files/netsetup
blob: cb94ad02f5fa551cf0d090afa1952bd97447388c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
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