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
|
#!/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
}
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
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" == "a" -o "$config_me" == "" ]; 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; 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() {
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-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
echo -n "Sind diese Eingaben korrekt? Drücken Sie y or Y für ja, andere Taste für nein: "
read -n 1 entry
echo
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
|