Mój Linux na PC-cie musi otrzymaæ IP oraz inne informacje o sieci z serwera DHCP. Ale nie mogłem znaleźæ takiego klienta, który działałby z moim serwerem.
Mój PC-et normalnie startuje z Windows 95, a Linux jest rzadziej używany. Klient DHCP pod Windows 95 działa u mnie dobrze. Mogłem skopiowaæ mój adres IP, "nameserver" itp. rêcznie do Linux-a, ale chciałem zautomatyzowaæ ten proces.
Windows 95 dostarcza program (\Windows\Winipcfg.exe), który wyświetla informacje DHCP w ładny graficzny sposób. Po przejrzeniu pliku winipcfg.exe odkryłem, że ma on nieudokumentowaną opcjê, która pozwala zapisaæ informacje do pliku (domyślnie jest to Winipcfg.out). Pozwoliło mi to, na zrobienie takiego trick-u:
Wersjê oryginalną tego dokumentu możesz znaleźæ na SUNSite Polska. Na temat wersji tłumaczenia patrz sekcja Od tłumacza.
Teraz szczegóły na temat tego jak to robiê:
winipcfg -all -batch c:\winipcfg.outOpcje muszą byæ podane w podanym porządku. Nie podanie -all spowoduje brak niektórych informacji. Nie podanie ścieżki do pliku winipcfg.out spowoduje zapisanie tego pliku w katalogu bieżącym. Poniżej jest załączony przykładowy plik winipcfg.out.
/etc/init.d/boot
z zanotowanymi moimi dodatkami. Twoja
dystrybucja może mieæ inne skrypty startowe, wiêc może bêdziesz
musiał to trochê zmieniæ. (aut. Patrz kilka linijek niżej na temat
innych dystrybucji).Program winipcfg.pl zapisuje nowe
wersje plików: /etc/hostname, /etc/resolv.conf oraz
/etc/init.d/network
. Skrypt network wykonuje polecenie
ifconfig z podanymi parametrami.To tyle. Zapamiêtaj oczywiście, że nie powinieneś trzymaæ Linux-a uruchomionego dłużej niż pozwala na to DHCP. Ja startujê tylko na kilka godzin, wiêc nie ma u mnie tego problemu.
Bêdziesz musiał dopasowaæ program winipcfg.pl jeśli masz wiêcej niż jeden adapter sieciowy albo pseudo-adapter. Na przykład, oprogramowanie AOL ustawia udawany (fake) adapter sieciowy, i musisz zignorowaæ jego informacje.
-------------------------------------------------------------------------------
Od autora: Oto lokalizacje plików odpowiedzialnych za konfiguracjê
sieci oraz plików inicjacyjnych:
/etc/sysconfig/network-scripts
natomiast montowanie odbywa
siê w pliku /etc/rc.d/rc.sysinit
/etc/rc.d/rc.inet1
, a plik
montujący systemy, to /etc/rc.d/rc.S
.Oto załączniki (jeden na stronê):
============================================================================== Przykładowy plik winipcfg.out zrobiony przez Win95 "winipcfg -all -batch" (adresy zostały zmienione ze wzglêdów bezpieczeñstwa) ============================================================================== 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 ============================================================================== ============================================================================== Wyjątek 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 według 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 plików 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 wywoływany ze skryptu startowego. ============================================================================== #!/usr/bin/perl while (<>) { # 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 & $netmask[0]+0, $ip_address[1]+0 & $netmask[1]+0, $ip_address[2]+0 & $netmask[2]+0, $ip_address[3]+0 & $netmask[3]+0); $broadcast = join(".", $ip_address[0]+0 | ~($netmask[0]+0) & 255, $ip_address[1]+0 | ~($netmask[1]+0) & 255, $ip_address[2]+0 | ~($netmask[2]+0) & 255, $ip_address[3]+0 | ~($netmask[3]+0) & 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); ==============================================================================
Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.
Jeśli znalazłeś jakieś rażące błêdy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:
Oficjalną stroną tłumaczeñ HOWTO jest http://www.jtz.org.pl/
Aktualne wersje przetłumaczonych dokumentów znajdują siê na
tejże stronie. Dostêpne są także poprzez anonimowe ftp pod adresem
ftp.jtz.org.pl w katalogu HOWTO
.
Przetłumaczone przeze mnie dokumenty znajdują siê także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.
Kontakt z naszą grupą, grupą tłumaczy możesz uzyskaæ poprzez listê
dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz siê na nią zapisaæ, to
wyślij list o treści subscribe jtz Imiê Nazwisko
na adres
majordomo@ippt.gov.pl
Zmiany wprowadzone przez tłumacza, to dodatek o lokalizacji plików startowych w innych dystrybucjach.