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
|