File: DHCP.pl.html

package info (click to toggle)
doc-linux-pl 2002.06.14-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, jessie, jessie-kfreebsd, lenny, squeeze, wheezy
  • size: 6,900 kB
  • ctags: 968
  • sloc: makefile: 66
file content (300 lines) | stat: -rw-r--r-- 11,942 bytes parent folder | download | duplicates (4)
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
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<META HTTP-EQUIV="content-type" content="text/html; charset=iso-8859-2">
<TITLE>Jak zmusi Linux-a, eby korzysta z informacji DHCP od Windows 95</TITLE>


</HEAD>
<BODY>
<H1>Jak zmusi Linux-a, eby korzysta z informacji DHCP od Windows 95<BR></H1>

<H2>Autor:Dan Halbert,
<A HREF="mailto:halbert@world.std.com">halbert@world.std.com</A><BR>
lub<BR>
<A HREF="mailto:halbert@bbn.com">halbert@bbn.com</A><BR>
6 Grudnia 1996<BR>
<B>Wersja polska: Bartosz Maruszewski
<A HREF="mailto:B.Maruszewski@jtz.org.pl">B.Maruszewski@jtz.org.pl</A><BR></B>
v1.02, 26 Lipca 1997</H2>
<P><HR>
<EM>Dokument ten zosta napisany w standardzie ISO-8859-2.
Wersja oryginalna znajduje si pod adresem 
<A HREF="ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/mini/">ftp.icm.edu.pl</A>.</EM>
<HR>
<H2><A NAME="s1">1. Wprowadzenie.</A></H2>

<P>
<P>Mj Linux na PC-cie musi otrzyma IP oraz inne informacje o sieci z
serwera DHCP. Ale nie mogem znale takiego klienta, ktry
dziaaby z moim serwerem.
<P>Mj PC-et normalnie startuje z Windows 95, a Linux jest rzadziej
uywany. Klient DHCP pod Windows 95 dziaa u mnie dobrze. Mogem
skopiowa mj adres IP, "nameserver" itp. rcznie do Linux-a, ale
chciaem zautomatyzowa ten proces.
<P>Windows 95 dostarcza program (\Windows\Winipcfg.exe), ktry
wywietla informacje DHCP w adny graficzny sposb. Po przejrzeniu
pliku <I>winipcfg.exe</I> odkryem, e ma on nieudokumentowan opcj,
ktra pozwala zapisa informacje do pliku (domylnie jest to
<I>Winipcfg.out</I>). Pozwolio mi to, na zrobienie takiego trick-u:
<P>
<OL>
<LI>Start Win95. Klient DHCP pobierze potrzebne informacje od serwera
DHCP.</LI>
<LI>Uruchomienie <I>Winipcfg.exe</I> i zapis wyniku do pliku.</LI>
<LI>Start Linux-a.</LI>
<LI>Zamontowa system plikw Win95.</LI>
<LI>Przeczyta plik utworzony przez <I>Winipcfg</I>.</LI>
<LI>Dostarczy potrzebne informacje Linux-owi.</LI>
</OL>
<P>Wersj oryginaln tego dokumentu moesz znale na 
<A HREF="ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/mini">SUNSite Polska</A>. Na temat wersji tumaczenia patrz sekcja
<A HREF="#tlum">Od tumacza</A>.
<P>
<H2><A NAME="s2">2. Metoda.</A></H2>

<P>
<P>Teraz szczegy na temat tego jak to robi:
<P>
<OL>
<LI>W moim folderze startowym Win95 uruchamiam to polecenie. Kiedy
Win95 startuje, Winipcfg zapisuje otrzymane od serwera DHCP
informacje:

<PRE>
        winipcfg -all -batch c:\winipcfg.out
</PRE>


Opcje musz by podane w podanym porzdku. Nie podanie <I>-all</I>
spowoduje brak niektrych informacji. Nie podanie cieki do pliku
<I>winipcfg.out</I> spowoduje zapisanie tego pliku w katalogu
biecym. Poniej jest zaczony przykadowy plik
<I>winipcfg.out</I>.</LI>
<LI>Natychmiast (albo jaki czas pniej) po starcie Win95, startuj
Linux-a. Uywam <I>loadlin-a</I> uruchamianego z batch-a
DOS-owego. Moesz uy tego albo czego innego.<BR>
(Nie moliwe jest poczenie loadlin-a i winipcfg w jednym batch-u
poniewa najprzypuszczalniej plik <I>winipcfg.out</I> nie zostanie
przepisany z cache'u na dysk przed startem loadlin-a. Nie znalazem
sposobu na zapisanie zawartoci cache'u na dysk z wiersza polece.)</LI>
<LI>Podczas startu Linux-a wykonywany jest program napisany w Perlu
(<I>winipcfg.pl</I>) doczony na kocu tego dokumentu. Program ten
musi by wykonany <B>po</B> zamontowaniu systemu plikw Win95, a
<B>przed</B> uruchomieniem skryptw sieciowych. Ja uywam dystrybucji
<I>Debian</I>: poniej zaczony jest wyjtek z pliku
<CODE>/etc/init.d/boot</CODE> z zanotowanymi moimi dodatkami. Twoja
dystrybucja moe mie inne skrypty startowe, wic moe bdziesz
musia to troch zmieni. (aut. Patrz kilka linijek niej na temat
innych dystrybucji).Program <I>winipcfg.pl</I> zapisuje nowe
wersje plikw: <CODE>/etc/hostname, /etc/resolv.conf oraz
/etc/init.d/network</CODE>. Skrypt <I>network</I> wykonuje polecenie
<I>ifconfig</I> z podanymi parametrami.</LI>
</OL>
<P>To tyle. Zapamitaj oczywicie, e nie powiniene trzyma Linux-a
uruchomionego duej ni pozwala na to DHCP. Ja startuj tylko na
kilka godzin, wic nie ma u mnie tego problemu.
<P>Bdziesz musia dopasowa program <I>winipcfg.pl</I> jeli masz
wicej ni jeden adapter sieciowy albo pseudo-adapter. Na przykad,
oprogramowanie AOL ustawia udawany (fake) adapter sieciowy, i musisz
zignorowa jego informacje.
<P>-------------------------------------------------------------------------------<BR>
<B>Od autora</B>: Oto lokalizacje plikw odpowiedzialnych za konfiguracj
sieci oraz plikw inicjacyjnych:
<P>
<UL>
<LI>RedHat: pliki odpowiadajce za konfiguracj sieci znajduj si w
<CODE>/etc/sysconfig/network-scripts</CODE> natomiast montowanie odbywa
si w pliku <CODE>/etc/rc.d/rc.sysinit</CODE></LI>
<LI>Slackware: plik sieciowy to <CODE>/etc/rc.d/rc.inet1</CODE>, a plik
montujcy systemy, to <CODE>/etc/rc.d/rc.S</CODE>.</LI>
</UL>

-------------------------------------------------------------------------------<BR>
<P>Oto zaczniki (jeden na stron):
<P>
<HR>
<PRE>

==============================================================================
Przykadowy plik winipcfg.out zrobiony przez Win95 "winipcfg -all -batch"
(adresy zostay zmienione ze wzgldw bezpieczestwa)
==============================================================================
Windows 95 IP Configuration

        Host Name . . . . . . . . . : foo.bar.com
        DNS Servers . . . . . . . . : 11.222.33.8
                                      11.222.33.9
        Node Type . . . . . . . . . : Broadcast
        NetBIOS Scope ID. . . . . . : 
        IP Routing Enabled. . . . . : No
        WINS Proxy Enabled. . . . . : No
        NetBIOS Resolution Uses DNS : Yes

Ethernet adapter :

        Description . . . . . . . . : ELNK3 Ethernet Adapter
        Physical Address. . . . . . : 00-AA-BB-99-88-77
        DHCP Enabled. . . . . . . . : Yes
        IP Address. . . . . . . . . : 11.222.33.222
        Subnet Mask . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . : 11.222.33.1
        DHCP Server . . . . . . . . : 11.222.33.10
        Primary WINS Server . . . . : 
        Secondary WINS Server . . . : 
        Lease Obtained. . . . . . . : Wed Oct 16 96 10:17:26 PM
        Lease Expires . . . . . . . : Wed Oct 30 96 10:17:26 PM
==============================================================================

==============================================================================
Wyjtek z pliku /etc/init.d/boot, z moimi dodatkami.
==============================================================================
...
# Mount local file systems in /etc/fstab.
echo "Mounting local file systems..."
mount -avt nonfs

# Execute swapon command again, in case we want to swap to
# a file on a now mounted filesystem.
swapon -a 2>/dev/null

#### Dodatek o DHCP info ####################################################
# Uaktualnij plik z informacjami sieciowymi wedug informacji z
# klienta DHCP pod Win95
if [ -f /c/winipcfg.out -a -x /usr/local/sbin/winipcfg.pl ]
then
  echo "Setting network information from Windows 95 DHCP info."
  # To powoduje zapisanie nowszych wersji hostname, resolv.conf oraz
  # init.d/network.
  # Katalog /c to tam, gdzie montuj system plikw Win95
  /usr/local/sbin/winipcfg.pl /c/winipcfg.out
  if [ $? != 0 ]
  then
    echo "Error getting network information. Using existing network info."
  fi
else
  echo "** Windows 95 DHCP info not available. Using existing network info."
fi
#### koniec dodatku o DHCP info #############################################

# Setup the network interfaces. Note that /var/run and /var/lock
# are cleaned up after this, so don't put anything in the "network"
# script that leave a pidfile or a lockfile.
if [ -x /etc/init.d/network ]
then
  /etc/init.d/network
fi

# Set hostname.
hostname --file /etc/hostname

# Now that TCP/IP is configured, mount the NFS file systems in /etc/fstab.
echo "Mounting remote file systems..."
mount -a -t nfs

...
==============================================================================

==============================================================================
/usr/local/sbin/winipcfg.pl:
To jest program perlowy wywoywany ze skryptu startowego.
==============================================================================
#!/usr/bin/perl

while (&lt;>) {
    # Remove any trailing CR and LF.
    s/\r//g;
    s/\n//g;

    if (/^\tHost Name.*: (.*)$/i) {
        ($hostname, $domain) = split(/\./, $1, 2);
    } elsif (/^\tDNS Servers.*: *(.*)$/i) {
        push @nameservers, $1;
    } elsif (/^\t +([\.0-9]+)$/) {
        push @nameservers, $1;
    } elsif (/^\tIP Address.*: (.*)$/i) {
        $ip_address = $1;
    } elsif (/^\tSubnet Mask.*: (.*)$/i) {
        $netmask = $1;
    } elsif (/^\tDefault Gateway.*: (.*)$i/) {
        $gateway = $1;
    }
}

$hostname || die "Hostname not given";
$domain || die "Domain not given";
$ip_address || die "IP address not given";
$netmask || die "Netmask not given";
$gateway || die "Gateway not given";
$#nameservers != -1 || die "No nameservers given";

open(HOSTNAME, ">/etc/hostname") ||
    die "Could not open /etc/hostname for writing\n";
open(RESOLV, ">/etc/resolv.conf") ||
    die "Could not open /etc/resolv.conf for writing\n";
open(NETWORK, ">/etc/init.d/network") ||
    die "Could not open /etc/init.d/network for writing\n";
chmod 0755, "/etc/init.d/network";

print HOSTNAME "$hostname\n";
print RESOLV "domain $domain\n";
print RESOLV "search $domain\n";
foreach (@nameservers) {
    print RESOLV "nameserver $_\n";
}

@ip_address = split(/\./, $ip_address, 4);
@netmask = split(/\./, $netmask, 4);
$network = join(".",
                $ip_address[0]+0 &amp; $netmask[0]+0,
                $ip_address[1]+0 &amp; $netmask[1]+0,
                $ip_address[2]+0 &amp; $netmask[2]+0,
                $ip_address[3]+0 &amp; $netmask[3]+0);
$broadcast = join(".",
                  $ip_address[0]+0 | ~($netmask[0]+0) &amp; 255,
                  $ip_address[1]+0 | ~($netmask[1]+0) &amp; 255,
                  $ip_address[2]+0 | ~($netmask[2]+0) &amp; 255,
                  $ip_address[3]+0 | ~($netmask[3]+0) &amp; 255);
print NETWORK
"ifconfig eth0 $ip_address netmask $netmask broadcast $broadcast
route add -net $network netmask $netmask
route add default gw $gateway metric 1
";

print
"DHCP info: $hostname.$domain ($ip_address)
  netmask: $netmask broadcast: $broadcast gateway: $gateway
  nameservers: @nameservers
";
exit(0);
==============================================================================
</PRE>
<HR>
<P>
<H2><A NAME="tlum"></A> 2.1 Od tumacza.</H2>

<P>
<P>Tumaczenie to jest chronione prawami autorskimi &copy; Bartosza
Maruszewskiego.
Dozwolone jest rozprowadzanie i dystrybucja na prawach takich
samych jak dokument oryginalny.
<P>Jeli znalaze jakie race bdy ortograficzne, gramatyczne,
skadniowe, techniczne to pisz do mnie:
<P>
<A HREF="mailto:B.Maruszewski@jtz.org.pl">B.Maruszewski@jtz.org.pl</A><P>Oficjaln stron tumacze HOWTO jest
<A HREF="http://www.jtz.org.pl/">http://www.jtz.org.pl/</A><P>Aktualne wersje przetumaczonych dokumentw znajduj si na
teje stronie. Dostpne s take poprzez anonimowe ftp pod adresem
<A HREF="ftp://ftp.jtz.org.pl/HOWTO/">ftp.jtz.org.pl</A> w katalogu <CODE>HOWTO</CODE>.
<P>Przetumaczone przeze mnie dokumenty znajduj si take na
<A HREF="http://www.jtz.org.pl/bartek/tlumaczenie.html">mojej stronie WWW.</A> S tam te odwoania do Polskiej Strony
Tumaczeniowej.
<P>Kontakt z nasz grup, grup tumaczy moesz uzyska poprzez list
dyskusyjn jtz@ippt.gov.pl. Jeli chcesz si na ni zapisa, to
wylij list o treci <CODE>subscribe jtz Imi Nazwisko</CODE> na adres
<CODE>majordomo@ippt.gov.pl</CODE>
<P>Zmiany wprowadzone przez tumacza, to dodatek o lokalizacji plikw
startowych w innych dystrybucjach.
<P>
</BODY>
</HTML>