blob: a824739958edd9ef57cdbd805369ce034bcca2ce (
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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
|
#!/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
|