ďťż

Blog literacki, portal erotyczny - seks i humor nie z tej ziemi


Jak zmusić Linux-a, żeby korzystał z informacji DHCP od Win­
dows 95
Autor:Dan Halbert, halbert@world.std.com
lub
halbert@bbn.com
6 Grudnia 1996
WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll
v1.02, 26 Lipca 1997


Dokument ten został napisany w standardzie ISO-8859-2. Wersja orygi­
nalna znajduje się pod adresem ftp.icm.edu.pl
.
______________________________________________________________________

Spis treści


1. Wprowadzenie.

2. Metoda.

2.1 Od tłumacza.


______________________________________________________________________

11.. WWpprroowwaaddzzeenniiee..


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
_w_i_n_i_p_c_f_g_._e_x_e odkryłem, że ma on nieudokumentowaną opcję, która pozwala
zapisać informacje do pliku (domyślnie jest to _W_i_n_i_p_c_f_g_._o_u_t).
Pozwoliło mi to, na zrobienie takiego trick-u:


1. Start Win95. Klient DHCP pobierze potrzebne informacje od serwera
DHCP.

2. Uruchomienie _W_i_n_i_p_c_f_g_._e_x_e i zapis wyniku do pliku.

3. Start Linux-a.

4. Zamontować system plików Win95.

5. Przeczytać plik utworzony przez _W_i_n_i_p_c_f_g.

6. Dostarczyć potrzebne informacje Linux-owi.

Wersję oryginalną tego dokumentu możesz znaleźć na SUNSite Polska
. Na temat
wersji tłumaczenia patrz sekcja ``Od tłumacza''.




22.. MMeettooddaa..


Teraz szczegóły na temat tego jak to robię:


1. W moim folderze startowym Win95 uruchamiam to polecenie. Kiedy
Win95 startuje, Winipcfg zapisuje otrzymane od serwera DHCP
informacje:


winipcfg -all -batch c:\winipcfg.out



Opcje muszą być podane w podanym porządku. Nie podanie _-_a_l_l spowoduje
brak niektórych informacji. Nie podanie ścieżki do pliku _w_i_n_i_p_c_f_g_._o_u_t
spowoduje zapisanie tego pliku w katalogu bieżącym. Poniżej jest
załączony przykładowy plik _w_i_n_i_p_c_f_g_._o_u_t.

2. Natychmiast (albo jakiś czas później) po starcie Win95, startuję
Linux-a. Używam _l_o_a_d_l_i_n_-_a uruchamianego z batch-a DOS-owego. Możesz
użyć tego albo czegoś innego.
(Nie możliwe jest połączenie loadlin-a i winipcfg w jednym batch-u
ponieważ najprzypuszczalniej plik _w_i_n_i_p_c_f_g_._o_u_t nie zostanie
przepisany z cache'u na dysk przed startem loadlin-a. Nie znalazłem
sposobu na zapisanie zawartości cache'u na dysk z wiersza poleceń.)

3. Podczas startu Linux-a wykonywany jest program napisany w Perlu
(_w_i_n_i_p_c_f_g_._p_l) dołączony na końcu tego dokumentu. Program ten musi
być wykonany ppoo zamontowaniu systemu plików Win95, a pprrzzeedd
uruchomieniem skryptów sieciowych. Ja używam dystrybucji _D_e_b_i_a_n:
poniżej załączony jest wyjątek z pliku /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 _w_i_n_i_p_c_f_g_._p_l zapisuje nowe wersje plików:
/etc/hostname, /etc/resolv.conf oraz /etc/init.d/network. Skrypt
_n_e_t_w_o_r_k wykonuje polecenie _i_f_c_o_n_f_i_g 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 _w_i_n_i_p_c_f_g_._p_l 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.

-------------------------------------------------------------------------------
OOdd aauuttoorraa: Oto lokalizacje plików odpowiedzialnych za konfigurację
sieci oraz plików inicjacyjnych:


ˇ RedHat: pliki odpowiadające za konfigurację sieci znajdują się w
/etc/sysconfig/network-scripts natomiast montowanie odbywa się w
pliku /etc/rc.d/rc.sysinit

ˇ Slackware: plik sieciowy to /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);
==============================================================================
______________________________________________________________________




22..11.. OOdd ttłłuummaacczzaa..


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:

B.Maruszewski@jtz.org.pl

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.









  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • qualintaka.pev.pl
  •