########### ########### ########### ################# ###### ####### ###### ####### ###### ####### ######## ####### ####### ###### ############# ############## ####### ###### ########## ########### ####### ####### ###### ###### ###### ###### ################# ############### ################ ######### ######### ######### O P E R A C N E S Y S T E M Y A P O C I T A C O V E S I E T E 创创创创创创创创创创创创创创创创创创创创创创创创创创创创创创创创创 Zopar uzitocnych URL ****************************************** * http://esmeralda.vsps-su.cz/leocn/ * * http://www.dkmnet.cz/novell/index.html * ****************************************** ###### ### ####### ### ### ## ##### #### ### #### ###### ### ### ##### ####### #### ###### ### ###### ####### ### ### ####### ###### ## ## ### ### ## ### ## ### ### ### ####### ### ## ## ### ### ## ### ## ### ### ### ## ### ## ###### ### ###### ####### ####### ### ### ### ## ### ### ### ### ###### #### ###### #### =*=*=*=* zapocet za uspesne zapoctove pisomky pisomky: 18.10.2001 22.11.2001 13.12.2001 #### ## # ## ###### ## ## ## ## ##### #### ##### #### ##### ### ## ## ## ## # ## ## ## ## ## ## ## ## ## ## ## ## ##### ## ## ## ###### ## ## ###### ## ## ## ## ## ## ## ## ### ## ## ## ##### ## ## ##### ##### ### #### ## ## ## ## 27.9.2001 ## Novell Netware - operac. system pre siete - jeho hlavnou sucastou je sietovy system suborov PC -HDD1 -HDD2 -HDD3 |-------<--Novell Server OS..DOS Win9x (FAT XX) WinNT (NTFS) Ak na pracovnu stanicu s operacnym systemom nainstalujeme klienta siete Novell, tak nam Novell spristupni dalsie disky. Pristup zavisi od autentifikacie. - Klient vysle poziadavku na server - Autentifikacia sa overuje cez NDS - Novell Directory Service - Ku kazdemu adresaru/suboru moze existovat ACL - Access Control List - zoznam dvojic KTO+CO [ma povolene] (KTO...Trustee List) (CO....Inherited Rights Filter) V pripade OS UNIX je mnozina CO tvorena polozkami> R, W, X - Read, Write, Execute V pripade OS Novell - A .. Access - riadenie pristupu - F .. File Scan - prezeranie suborov - R .. Read - W .. Write - M .. Modify - E .. Erase - C .. Create - S .. Supervisor --------- Pracujeme v strome PF [Bindery/NDS - he?] [Root] | |-Country (.C) | | | |-Organization (.O) | | |-Organization (.O = PF) | |-Organisational Unit (.OU = std, usr) | | | |-User (NOVROB00) | |-User (BUKLEV00) (pekny strom, co?) V tomto strome sa mozu vyskytovat objekty - kontajneroveho typu (obsahuju dalsie objekty, pr. OU) - listoveho typu (useri) Uplne uzivatelske meno (pospoliteho) studenta ma tvar NOVROB00.std.PF #### ## # ## ## ###### ## ## ## ## ## ##### #### ##### #### ##### ### ## ## ## ## ## # ## ## ## ## ## ## ## ## ## ## ## ## ## ##### ## ## ## ###### ## ## ## ###### ## ## ## ## ## ## ## ## ### ## ## ## ## ##### ## ## ##### ##### ### #### ## ## ## ## ## 4.10.2001 ## Binding NDS struktura NDS ucebne P_x - implicitny kontext std.pf moznosti prihlasenia: NAGPET01 .NAGPET01.std.pf - absolutny zapis . zlava - cely nasledovny retazec zacina v koreni root NAGPET01.std. . sprava - vracia sa o isty pocet hierarchii hore ku korenu relativny zapis NAGPET01.std.PF.. posun o dve urovne hore - tj do rootu PF |- std |- adm |- usr nech uzivatel HAMO je v adm prihlasenie z ucebne P_x: .HAMO.adm.PF HAMO.adm. -- .CN=NAGPET01.OU=std.O=pf O - organization OU- organization unit CN- common name ak v rovnakom kontajneri: .CN=NAGPET01 NDS je adresarova sluzba, nesie v sebe aspon autorizacne info o useroch v roznych kontextoch useri sa mozu nachadzat aj viac krat - ale musia byt v roznych kontextoch. --------- NDS a jej vlastnosti Kazdy objekt - kontajnerovy/listovy ma vlastnosti: Objekty rovnakeho typu mozu mat rovnake properties s roznymi hodnotami - properties User> - FullName .. plne meno uzivatela (nepovinne) - Given Name - Last Name - Name - Groups I'm Member In - Password Nastroj f:\public\win32\nwadmn32.exe - NetWare Administrator na ploche je kontajner std v nom objekty typu skupina pouzivatelov (usergroup) Pravy klik - v okne je 5 skupin vlastnosti Vlastnost Members - zoznam uzivatelov v danej skupine - vacsinou len objekty typu user - uvedene plnou adresou NOVROB00.std.PF Pklik - Security equal to me - zoznam objektov s rovnakymi pravami ako ja ADD.. - na pridanie objektu nie su dostatocne prava Identification list - vlastnosti Other Name, Organization.. mozno zmenit ak su prava Objekty typu USER - postavicky GROUP - 3 postavicky alias objekty - skatulka - pre volumes-zvazky (suborove adresare) PKlik | Details - informacie o danom zvazku (Statistics) - restrikcie diskoveho priestoru (User Space Limits) - Trustees of the Root Directory - pristupove prava pre korenovy adresar daneho zvazku (S, R, W, C, E, M, F, A) Pristupove prava - implicitne, explicitne -> maska -> efektivne implicitne - dedia sa explicitne - su _explicitne_ priradene maska - ktore z (exp/imp) prav z nadradenej hierarchie sa dostanu nizsie SRWCEMFA pr> Nech maska je SRW a nech niekto ma RWC. Zdedit z nadradeneho moze len implicitne prava RW Rozlisujeme pristupove prava k - file systemom - NDS objektom (tj pre objekty, resp. ich properties) u adresarov ziadna maska pravo S nezrusi, naopak u objektov pravo S do podobjektov moze byt nejakou maskou odfiltrovane Pr> PF |- std |- adm |- usr Majme 3 spravcov, nech - 1. sa stara o std, - 2. o adm - 3. o adm aj usr pri filesystemoch pravo S na pf ho ziadna maska neodfiltruje (S bude aj v adm i usr) maska na std, adm zakazujuca S zmeni efektivne prava na pristup ku kontajnerom teda spravca moze mat S prava na PF, user, ale nie na adm. pri pristupovych pravach k objektom sa S pravo da odfiltrovat, pri pristupe k filesystemu nie. Pisomka... #### ## # ## ## ## ###### ## ## ## ## ## ## ##### #### ##### #### ##### ### ## ## ## ## ## ## # ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##### ## ## ## ###### ## ## ## ## ###### ## ## ## ## ## ## ## ## ### ## ## ## ## ## ##### ## ## ##### ##### ### #### ## ## ### ## ## 25.10.2001 ## NDS Manager F:\public\WIN32\NDSMGR32.EXE NDS strom - DB jednotka, kt podporuje schopnost uchovavat info o objektoch a ich vlastnostiach S k [Root] objektu - mozno upravovat schemu celeho stromu NDS. schema je jedina - zmeny sa aplikuju v celej NDS - v jej podstromoch aj ked tam nie su prava classes - property Object|Schema Manager okno s 2 castami Klik Class Country - meno - nemozno zmenit - atributy - can be contained by - top - koren stromu - Root - - Class Flags - Mandatory Attributes - povinne atributy - meno - trieda objektu - Object Class - Naming Attribs - C - meno daneho atributu Objekt typu user - Can B contained by - Organization - Org. Unit - v class flags nie je Container Flag - tj je to listovy objekt - Optional Attribute - Test Objekt typu Alias - zastupca na objekty - can be contained by je prazdne - moze byt hocikde - Aliased Object Name - meno odkazovaneho objektu - Object Name - nazov objektu sys. suborov sprava IO zar siet kom. zabezpecenie Capturing - vplyv na spravu IO zar - zachytenie dat smerovanych na specifik. port (LPT1) a ich posielanie inam. Pr> Server - bezi sluzba PrintServer - je pripojena tlaciaren na prac. stanici existuje pripojenie na siet ak na prac. stanici je aktivovany capturing na LPT1 presmerovany na sietovy zdroj (tlaciaren servera) potom lubovolna app. posielajuca data na LPT1 v skutocnosti su data posielane na sietovu tlaciaren (pre app CAPTURE SH - capture show - ktore porty su zachytene v P3 LPT1 Capturing is not currently active. LPT2 Capturing is not currently active. LPT3 Capturing is not currently active. CAPTURE CR=meno_suboru_na_sietovom disku L=cisloportu(in[1..9]) CAPTURE CR=H:\x.txt L=2 -port LPT2 bude presmerovany do suboru H:\x.txt LPT1 Capturing is not currently active. LPT2 Capturing data to server DURO in a file Automatic end: Enabled Timeout count: Disabled LPT3 Capturing is not currently active. Automatic end - ak sa vysle Close na LPT2, capturing sa ukonci Timeout count - ak aplikacia po specifik. dobe neposle ziadne data, capturing sa ukonci Ukoncenie - CAPTURE EC L=2 - ukoncenie capture - zaslanie operacie capture dokonca sa port ani nemusi na stanici nachadzat na urovni Windows su Windows Print Devices (v DOSe len LTP?) capturing je aktivny AKK ked aplikacia posiela data priamo na LPT vo Win mozno zariadenie presmerovat inak Novell tlacove zariadenia NN vyuziva Print Server objekty typu - printer - queue data su zaradovane do front ----------- --- --- |Printserver| - |Q| - |P| ----------- --- --- | --- --- |Q| - |P| --- --- | \ --- --- |P| |P| --- --- printserver rozhodne, na ktoru tlaciaren ulohu z fronty tlaci (najcastejsie na volnu) ak sa tlacia naraz 3 ulohy a 3 tlaciarne su volne postupne sa obsadia tlaciarne ulohami napr. 3 fronty, 2 tlaciarne printserver musi kombinovat ulohy z 2 front aby sa tlacilo spravne obvykle Q1 ma prioritu 1 (studenti su rovni, ucitelia rovnejsi) obvykle Q2 ma prioritu 2 tlacova uloha ucitela predbehne vsetky studentske ulohy okrem aktivnej, spracuje sa alebo tlaciaren ma viac trayov pre kazdu frontu sa def. print form - inicial. retazce, ktore nastavia tlaciaren na prislusny tray pred tlacou ulohy #### ## # ## ## ###### ## ## ## ## ## ##### #### ##### #### ##### ### ## ## ## ## ## # ## ## ## ## ## ## ## ## ## ## ## ## ## ##### ## ## ## ###### ## ## ## ###### ## ## ## ## ## ## ## ## ### ## ## ## ## ##### ## ## ##### ##### ### #### ## ### ## ## 8.11.2001 ## mechanizmus prekladu LAP -> FAP suvisla alokacia, oblasti roznej velkosti velkosti pamate dodane spravcom sa budu ukladat jedna za druhou v LAP LAP FAP |-| |-| | | |1| |-| |-| | | | |-| v LAP zaradom, vo FAP sprehadzane ake mapovanie spravit? nutna prekladova tabulka pre spravcu pamate |zac. oblasti v LAP| velkost oblasti v LAP | zac vo FAP 0 | 1 | i-ty blok pamati ulozeny v i-tom riadku prepocet X[LAP] -> X[FAP] FOR i:=0 to pocriadkovtabulky DO LZAC <= x < LZAC + LSIZE .. zistime z ktoreho bloku je X ak sa najde i, vieme, ze mame pripustnu adresu inak neopravneny pristup \exists i: tab[i].lzac <= x < tab[i].lzac + tab[i].lsize vieme uz aj riadok tabulky Tab[i].fzac + x - Tab[i].lzac .. offset nech 2.blok je taky, ze sme chceli 136B dostali sme 144 |zac. oblasti v LAP| velkost oblasti v LAP | zac vo FAP 0 | 144 1 | 2 | vyhoda .. temer bez internej fragmentacie (zaokruhlovanie len kvoli procesorom ktore vedia pristupovat k oblasti len po zarovnanych bajtoch (mod 4, mod 2) .. nemozu vyuzyvat pristup k neparnym bajtom nevyhody .. externa fragmentacia .. cyklus potrebny pre preklad adresy - linearne zavisly od poctu alokovanych oblasti syscall Exit ukoncuje proces slusny programator po sebe upratuje, aj exit by to mal zvladnut: nech funkcia function free(zac, velkost) uvolni lubovolny pamatovy blok zac, velkost muselo byt pouzite pri alokacii pamat (aby neboli po uvolneni bezprizorne bajty) spravca pamati musi udrziavat zoznam volnych xor pouzitych pamat. blokov (spolocny pre cely FAP) prechadzame cez vsetky pamat. bloky pridelene procesu) for i:=0 to ? free(tab[i].lzac,tab[i].lsize); ak aj programator po sebe vsetku pamat uprace Exit musi minimalne upratat - text programu (kod) - call stack - globalne data - PCD (uz nie exit, ked proces prechadza do terminated) v zozname pouz. pamat. blokov sa uklada aj pocet odkazov .. ak viacere procesy toho isteho programu vedia vyuzivat ten isty kod uvolnenie znamena znizenie poctu odkazov/ ak 0, az vtedy uvolnujeme zo zoznamu sharing memory mechanism - zdielana pamat procesy mozu zdielat pamat. bloky princip proces poziada o vytvorenie pamat. bloku SM naviaze si pamat. blok do svojho adres. priestoru (LAP) - vie k nej pristupovat ako k normalnej pamati vytv. pamat blok ma ID iny proces moze vytvorit pamat blok s tym istym ID (ak existuje, vrati sa ID) a naviazat pamat. priestor do svojho LAPU v LAP nemusia byt polozky u oboch procesorov rovnake (v 1. 1000, v 2. 2000) - dokonca je obtiazne to zabezpecit aka je situacia v tabulke? ???? #### ## # ## ## ## ###### ## ## ## ## ## ## ##### #### ##### #### ##### ### ## ## ## ## ## ## # ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##### ## ## ## ###### ## ## ## ## ###### ## ## ## ## ## ## ## ## ### ## ## ## ## ## ##### ## ## ##### ##### ### #### ## ### ## ## ## 15.11.2001 ## Linuch!!!! novotnyr - halUsky zmena hesla PASSWD [username] UNIX je case-sensitive prikazy vacsinou male pismena bezpecnost, pristupove prava Manualove stranky: man passwd passwd(1) .. ekvivalentny pojem etc/passwd je v inej sekcii man 5 passwd informacie o subore passwd man 3 crypt ... #include char *crypt(const char *key, const char *salt); ... vracia pointer na znak, ocakava dva argumenty ako pointery na znak v C: asciiz tabulka +---+---+---+---+-+ |'A'|'H'|'O'|'J'|0| +---+---+---+---+-+ v Pascale: +-+---+---+---+---+ |4|'A'|'H'|'O'|'J'| +-+-+-+---+---+---+ dlzka retazca sa vypocitava sekvencne od pociatku po 0 smernik na znak - smernik na prve pismeno retazca iny smernik moze ukazovat na 'O' *key .. heslo *salt .. 2 znaky [a-zA-Z0-9./] -> 4096 moznosti pre kryptovanie nech salt je no prikaz echo $HOME - vypise domovsky adresar echo $SHELL - interpreter prostredia (/bin/bash) shadow databaza hesiel..do nej ma pristup len proces ekv. root more /etc/passwd zoznam vytvorenych userov v : tvare uloha: pristupove prava, vlastnik a jeho skupina pre /etc/passwd /etc whereis passwd .. kde je passwd o nom tiez pristupove prava, vlastnik a jeho skupina z toho vsetkeho skonstruovat, co sa da robit z prislusnymi subormi pripadne, co s nimi moze robit proces prihlasovanie: zada sa username, heslo v login procese sa vyhlada riadok v tab. /etc/passwd kde polozka je zhodna s menom, zakryptovane heslo sa porovna s heslom v shadow db ak zhoda, uspesny login - spusti sa shell v ramci neho sa nastavi do home adresara prip. vykona dalsie skripty .login .profile uloha: ake sys funkcie je nutne pouzit, aby sa z /etc/passwd dala vyextrahovat meno, priezvisko, ak polozky su oddelene : #### ## # ## ## ## ## ###### ## ## ## ## ## ## ## ##### #### ##### #### ##### ### ## ## ## ## ## ## ## # ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##### ## ## ## ###### ## ## ## ## ## ###### ## ## ## ## ## ## ## ## ### ## ## ## ## ## ## ##### ## ## ##### ##### ### #### ## ### ## ## ## ## ## login logout exit cp rm mv * nie vo vsetkych shelloch - subory musia byt v tej istej particii ls mkdir rmdir cat echo more - filter *** | *** pajpa presmerovanie vstupu/vystupu vi rezim pisania - prepinanie Esc, rezim pohybu :q - ukoncenie :q! - ukoncenie bez ulozenia zmien passwd find . -name="*.sql" -mtime -1 find /tmp -mtime -3 -exec rm {} \; chmod chown chgrp --spracovanie textu cut grep awk split join sed - filter pre spracovanie textov awk - nastroj pre sprac. textu vzorka | prikaz | prikaz - prikaz sa vykona nad vsetkymi riadkami sprac. suboru vzorka | - pre vsetky riadky vyhovujuce vzorke sa danz riadok vypise na vystup vsetky riadky obsahujuce hello /hello/ mozno def. vlastne funkcie, rekurziu, lokal. premenne spec. vzorky: BEGIN - vzorka, kt. vyhovuje riadku po konci suboru do file sa vlozi konstanta END - vzorka, kt. vyhovuje riadku po konci suboru su volitelne nacita sa riadok vstupneho suboru vykonavaju sa vyhovujuce pravidla etc. || or alebo xor /mamka/ || /tatko/ ^ zaciatok riadku /^--/ su na zac. riadku dve minuska $ koniec riadku /^$/ je riadok prazdny? next - prestane sa spracovavat tento riadok, zacne sa spracovavat dalsi /^CREATE TABLE/ SS=trim(nocomment($0)) $0 aktualny riadok vstup suboru $1 prvy riadok trim nocomment (file=="CR_TABLE.txt") && /default/ ak premenna subor obsahuje .. a v riadku je slovo default length(ss)>0 print(ss) presmerovanie IO | - rura < - > >> - pripojenie spustenie awk s povelovym suborom awk -f do_it_txt screate.sql nech vstupnym suborom je subor, kt v kazdom riadku ma aspon 1 nezaporne cislo pre kazdy riadok poslat na stand. vystup geometricky priemer cisel v danom riadku Pocet cisiel, sucet vsetkych cisiel, priemer uname -a #### ## # ## ## ## ## ## ###### ## ## ## ## ## ## ## ## ##### #### ##### #### ##### ### ## ## ## ## ## ## ## ## # ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##### ## ## ## ###### ## ## ## ## ## ## ###### ## ## ## ## ## ## ## ## ### ## ## ## ## ## ## ## ##### ## ## ##### ##### ### #### ## ### ## ## ## ## ## ## Eine kleine pisomka... //vypis neparne riadky awk 'FNR % 2 == 1 {print $0}' //vypisanie home adresara roota grep ^root /etc/passwd | cut -f6 -d: //alebo cez awk awk -F: '/^root/ { print $1,$6 }' /etc/passwd #### ## # ## ## ## ###### ## ## ## ## ## ## ##### #### ##### #### ##### ### ## ### ## ## ## # ## ## ## ## ## ## ## ## # ## ## ## ## ##### ## ## ## ###### ## ## ### ###### ## ## ## ## ## ## ## ## ### ## ## ## ## ## ##### ## ## ##### ##### ### #### ## ## ## ## ## ## ## Procesy PCB v tabulke inf z tejto tabulky si mozno zobrazit ps kopa argumentov - minus volby bez minus (kvoli 2 vetvam UNIXu - Berkeley, Five) novotnyr@skmi:~$ ps PID TTY TIME CMD 17241 pts/17 00:00:00 bash 17711 pts/17 00:00:00 ps PID cislo procesu TTY cislo terminalu pseudo terminaly fyz. neexistujuce, len cez siet /dev/pts/13 TIME - kolko casu to spotrebovalo novotnyr@skmi:~$ ps -f UID PID PPID C STIME TTY TIME CMD novotnyr 17241 17237 0 08:12 pts/17 00:00:00 -bash novotnyr 17784 17241 0 08:24 pts/17 00:00:00 ps -f STIME - starttime bash ma rovnake PID ps ma ine pid ako v prvom bash vznikol po logine z /etc/passwd - je to shell - interpreter prikazov po zadani ps bash sa forkom zduplikuje, xvilu existuju 2 bashe obsah bashu sa nahradi programom ps vykona sa obsah ps ak sa ukonci, proces zanikne ps -f vyforkuje -> 2 bashe -> 1 sa nahradi kodom ps -f vypise sa obsah na terminal -> koniec PPID - cislo procesu rodicovskeho procesu moze byt zhodny s PID bashu - bash je rodicom ------ pstree - strom procesov - na vrchu proces init - vetvicky - ostatne procesy ps -ef analogicky vypis, vypisuju sa vsetky procesy systemu najdite proces, ktoreho cislo rodica neexistuje medzi procesmi PPID 0 - rodicom je init /etc/inittab textovy subor struktura po riadkoch, polozky oddelene : id:runlevels:action:process vsetky riadky nezacinajuce mriezkou grep -v "^#" /etc/inittab |more l0:0:wait:/etc/init.d/rc 0 .. l6:6:wait:/etc/init.d/rc 6 urovne - runlevels 0 wait 1 single user 2-5 multiuser obvykle 3-5 3 bez Xserver 5 s Xserverom inittab - konf.subor pre program init, stale pritomny v pamati. Ak system prechadza do urovne, ktora je v zozname runlevels (v nejakom riadku) vykona sa dany proces v danej akcii akcia: wait, respawn, powerakcie,... respawn - proces sa spusti, necaka sa na ukoncenie cinnosti procesu - getty - inicializacia terminalovych procesov wait - ocakava sa na ukoncenie procesov - spracuju sa dalsie riadky uroven 5 je napr. vo viacerych riadkoch ak sa najde riadok 5 a prechadza sa do stavu 5 snaha vykonat dany proces respawn - proces sa len spusti wait - spusti a cakaj na ukoncenie procesu, spracuj dalsi riadok /etc/init.d/rc if.. vykonavaju sa akcie for i , vykonaj premennu i sa parametrom stop adresare 3,5 - obsahuju len eSka Uloha: skontrolujte, na zaklade ktoreho suboru S sa v urovni 5 spusti webserver (Apache) /etc/rc0.d/K20apache co vsetko sa vykona pre to, aby sa Apache spustil ako sa prejavuje cakanie / necakanie rodica na smrt svojich potomkov v psmakefile deklaracie premennych # komentare BIN = date_svc r_date GEN = date_clnt.c date_svc.c date.h LIB = -lrpcsvc -lnsl RPCCOM = rpcgen CFLAGS = -I.. -O $(GEN): date.x $(RPCCOM) date.x date_svc: date_proc.o date_svc.o $(CC) -o $@ date_proc.o date_svc.o $(LIB) r_date: rdate.o date_clnt.o $(CC) -o $@ rdate.o date_clnt.o $(LIB) rdate.o: rdate.c date.h date_proc.o: date_proc.c date.h clean: rm -f $(GEN) *.o $(BIN) podmienka:prikaz (CC) meno prekladaca C (i linkera) -o pomenovany vystup neuvedeny sposob - preklad pomocou cc, vznikne objekt make novotnyr@skmi:~/public_html/hamo$ make cc -I.. -O -c -o date_proc.o date_proc.c cc -I.. -O -c -o date_svc.o date_svc.c cc -o date_svc date_proc.o date_svc.o -lrpcsvc -lnsl cc -I.. -O -c -o rdate.o rdate.c cc -I.. -O -c -o date_clnt.o date_clnt.c date_clnt.c: In function `bin_date_1': date_clnt.c:18: warning: passing arg 6 of pointer to function from incompatible pointer type date_clnt.c: In function `str_date_1': date_clnt.c:30: warning: passing arg 4 of pointer to function from incompatible pointer type date_clnt.c:30: warning: passing arg 6 of pointer to function from incompatible pointer type cc -o r_date rdate.o date_clnt.o -lrpcsvc -lnsl spustme server program ./date_svc& a klienta ./r_date localhost time on host skmi = 1008228343 time on host skmi = Thu Dec 13 08:25:43 2001 rpcinfo -p program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100021 1 udp 1024 nlockmgr 100021 3 udp 1024 nlockmgr 100024 1 udp 805 status 100024 1 tcp 807 status 824395111 1 udp 1315 824395111 1 tcp 2460 sscanf(xxx,"%d",yyy);