Az OS/2-es REXX tanfolyam során már említettük, hogy a REXXUtil segédfüggvényekhez hasonlóan más DLL-eket is lehet REXX-bôl regisztrálni, amelyek segítségével további segédfüggvényekre tehetünk szert. Tanfolyamunk során olyan DLL-ekkel ismerkedünk meg, amelyek segítségével REXX-bôl használhatjuk más termékek (pl. Lan Server) szolgáltatásait.
Az LSRXUT.DLL története
1993-ban jelentette meg az IBM ennek a DLL-nek az elsô verzióját, amely segítségével lehetôség nyílt a Lan Server 3 egyes szolgáltatásainak elérésére REXX-bôl. Az idôk folyamán egyre másra jelentek meg az egyre tökéletesebb verziók. A DLL-t kezdetben még LS30UT.DLL-nek hívták, s a név csak a Lan Server 4.0 megjelenésekor módosult LSRXUT.DLL-re. A névváltoztatás három függvény nevének a megváltozását is maga után vonta (LoadLs30utFuncs -> LoadLsRxutFuncs, LSRx30Ver -> LsRxutVer, DropLs30utFuncs -> DropLsRxutFuncs). Tanfolyamunk során mi mindig az új DLL-t és az új neveket fogjuk használni. Ha valaki a DLL régebbi változatával dolgozik, akkor ügyeljen arra, hogy a régebbi neveket használja. A névváltozáson kívül az új verzió azt is lehetôvé tette, hogy a LAN Server 4 összes API-ját használni tudjuk REXX-bôl. A DLL legutolsó verziói (nekem a 2.00.04 van meg, ha valakinek van ettôl újabb, akkor szóljon) a Warp Serverrel (LAN Server 5) is használhatóak. Az LSRXUT.DLL gyakorlatilag minden LAN Server vagy Requester telepítô-anyagban megtalálható. Elôfordul, hogy a DLL az LSRXUTIL.ZIP fájlban rejtôzik némi dokumentáció (INF fájl) és példaprogramok kíséretében. Más esetekben (pl. a net.Times 2. CD, \WARPSRV\OS2CLNT\ könyvtár) a DLL egymagában, dokumentáció nélkül található meg. A DevCon CD-ken is elô szokott fordulni, a 8-as kiadásban pl. az lsmt203.zip fájlba csomagolták. Ez a csomag azért is érdemel több figyelmet, mivel nagyon sok olyan példaprogramot tartalmaz, amelyek nagyon megkönnyítik a rendszergazdák életét.
A DLL használata
Mielôtt használhatnánk a bôvítômodul által kínált függvényeket, a DLL-t be kell másolni egy, a LIBPATH környezeti változóban található könyvtárba és a DLL függvényeit, (vagy legalább a használni kívánt függvényt) regisztrálni kell. Ez egész folyamat nagyon hasonlít a REXXUtil függvények regisztrálásához. Itt is van egy segédfüggvény (LoadLsRxutFuncs), amely regisztrálja a DLL többi függvényét, így elég ezt az egyet regisztrálni és meghívni. Az alábbi példaprogram éppen ezt demonstrálja. A sikeres regisztrálás után a program kiírja a DLL verzióját, majd pedig törli a memóriából a regisztrált függvényeket:
/* Az LSRXUT.DLL tesztelése */ Say 'Tesztelem az LSRXUT.DLL-t...' call RxFuncAdd 'LoadLsRxutFuncs', 'LSRXUT', 'LoadLsRxutFuncs' call LoadLsRxutFuncs Say 'LoadLsRxutFuncs sikeresen végrehajtva!' version = LsRxutVer() say 'A DLL verziója:' version call DropLsRxutFuncs exit
Vegyük észre, hogy a példaprogram pont azt a három függvényt használja, amelyeknek megváltozott a neve a 2.0-ás verziótól kezdve. Ha tehát a program nem mûködne, akkor próbálkozzunk a régebbi függvénynevekkel.
Az alapfüggvények
Az LSRXUT.DLL 11 alapfüggvényt tartalmaz. Ezeket még a legelsô verzió készítésekor írták, s bár benne hagyták ôket az újabb verziókban is, az IBM már nem ajánlja használatukat, mivel helyes mûködésük nem mindig garantált. Az alábbi táblázatban összefoglaltuk az alapfüggvényeket és azok funkcióját:
| Függvénynév: | Funkció: |
| GetDCName | Megadja a domain controller nevét. |
| CopyDirAcls | Átmásolja a forráskönyvtár elérési jogait a célkönyvtárra. |
| DumpAllUsers | A felhasználókkal kapcsolatos információkat bináris fájlban tárolja el. |
| DumpUser | Egy adott felhasználóval kapcsolatos információkat bináris fájlban tárolja el. |
| InsertAllUsers | Az elôzô két függvénnyel elôállított bináris fájlok alapján visszaállítja a felhasználók definícióit. |
| QueryDirAliasPath | Megadja egy adott alias-hez tartozó könyvtár elérési útvonalát. |
| MoveDirAlias | Módosítja a könyvtár alias-hez tartozó elérési utat. |
| SetLogonAsn | A felhasználó belépésekor definiált hozzárendeléseket (logon assignment) adja meg. |
| GetLogonAsn | Lekérdezi a már definiált hozzárendeléseket. |
| NetEnum | Felsorol néhány, a LAN Server által nyújtott információt. |
| GetLogonAsnAcp | Lekérdezi a belépési hozzárendelésekkel kapcsolatos jogokat. |
A NetAdd függvények
Mint ahogyan azt a név is sugallja, ezekkel a függvényekkel új definíciókat lehet létrehozni. A függvények általános alakja a következô:
Rc = NetAdd(opció, 'összetett_változó', paraméter1, paraméter2, paraméter3) Rc = NetAdd(opció, paraméter1, paraméter2, paraméter3)
Az opció határozza meg, hogy milyen mûveletrôl van szó. A paraméterek jelentése az opciótól függ, amely tulajdonképpen egy egész szám. Hogy a kód jól olvasható legyen, a számokat könnyen értelmezhetô változókkal szokás helyettesíteni. Az alábbi táblázat mutatja az általánosan elfogadott jelölésrendszert.
| Opció: | Érték: |
| NETACCESS | 10 |
| NETACCESSUSERPERMS | 12 |
| NETALIAS | 20 |
| NETAPP | 30 |
| NETAPPSEL | 32 |
| NETCONNECTION | 40 |
| NETLOGON | 50 |
| NETLOGONASN | 52 |
| NETFILE | 60 |
| NETGROUP | 70 |
| NETMESSAGENAME | 80 |
| NETBIOS | 90 |
| NETPRINTDEST | 100 |
| NETPRINTJOB | 110 |
| NETPRINTQUEUE | 120 |
| NETCHARDEV | 130 |
| NETCHARDEVQ | 140 |
| NETSERVERDISK | 150 |
| NETSERVER | 160 |
| NETSERVICE | 170 |
| NETSESSION | 180 |
| NETSHARE | 190 |
| NETSTATISTICS | 195 |
| NETSHARECHECK | 210 |
| NETFILECLOSE | 220 |
| NETHOMEDIR | 230 |
| NETACCESSDEL | 240 |
| NETACCESSADD | 250 |
| NETUSERPASSWORD | 260 |
| NETUSE | 270 |
| NETUSER | 280 |
| NETUSER2 | 282 |
| NETUSERINITDCDB | 290 |
| NETPRINTPORT | 300 |
| NETPRINTDRIVER | 310 |
| NETPRINTQPROC | 320 |
| NETUSERGROUPS | 330 |
| NETGROUPUSERS | 340 |
| NETWKSTA | 350 |
| NETUSERMODALS | 360 |
| NETSERVERMODALS | 370 |
| NETEXPIREPASSWORD | 400 |
| NETFINDADDRESS | 410 |
| NETACCESSCHECK | 420 |
| NETUSERVALIDATE2 | 500 |
| NETGETDCNAME | 510 |
| NETACCESSAPPLY | 520 |
| NETMESSAGEBUFFERSEND | 530 |
| NETMESSAGEFILESEND | 540 |
| NETMESSAGELOGFILE | 550 |
| NETMESSAGENAMEFWD | 560 |
| NETMESSAGENAMEUNFWD | 570 |
| NETAUDITLOGCLEAR | 580 |
| NETERRORLOGCLEAR | 640 |
| NETERRORLOGREAD | 650 |
| NETERRORLOGWRITE | 660 |
| NETREMOTECOPY | 670 |
| NETREMOTEEXEC | 680 |
| NETREMOTEMOVE | 690 |
| NETREMOTETOD | 700 |
| NETSERVERADMINCMD | 710 |
| NETUSERDCDBINIT | 720 |
| NETDASDCHECK | 730 |
| NETDASDCONTROL | 740 |
| NETDASD | 750 |
Amennyiben valamilyen értékcsoport át- vagy visszaadásra kerül, akkor az az "összetett_változó"-ban kerül eltárolásra. Az opciók az Add függvények esetében a következôek lehetnek:
| Opció: | Jelentés: |
| NETACCESS | ACP (access control profile = jogosultságok profilja) létrehozása. |
| NETACCESSADD | ACP hozzáadása. |
| NETALIAS | Alias létrehozása. |
| NETAPP | Alkalmazás definiálása. |
| NETAPPSEL | Hozzáadja a választott alkalmazást a felhasználó alkalmazáslistájához. |
| NETDASD | Könyvtárkorlátozások beállítása. |
| NETGROUP | Csoport létrehozása. |
| NETGROUPUSERS | Felhasználó csoportba sorolása. |
| NETLOGONASN | Belépési hozzárendelés megadása. |
| NETMESSAGENAME | Név hozzáadása az üzenettáblához. |
| NETSHARE | Megosztás (share) létrehozása. |
| NETUSE | Megosztás felhasználása. |
| NETUSER | Felhasználó létrehozása. |
| NETUSER2 | Felhasználó részletesebben specifikált létrehozása. |
| NETUSERINITDCDB | Felhasználó létrehozása és a Domain Controller utasítása a felhasználói könyvtár létrehozására. |
Sajnos nincs arra lehetôség, hogy részletesen megtárgyaljuk az összes függvényt. Erre azonban nincs is szükség, mivel a pontos szintakszis jól le van írva az LSRXUTIL.INF fájlban, s minden függvényhez mellékeltek egy példaprogramot is. Hogy azért valamilyen fogalmunk mégis legyen a NetAdd függvények használati módjáról, nézzünk megy példaprogramot, amely a táblázatban utolsó függvényt használja egy új felhasználó létrehozására:
/* Készít egy felhasználót és inicializálja a DCDB-t */ call RxFuncAdd 'LoadLsRxutFuncs', 'LSRXUT', 'LoadLsRxutFuncs' call LoadLsRxutFuncs NETUSERINITDCDB = 290 SrvName = '\\WARPY' userInfo.name = 'WST1' userInfo.password = 'PASSWORD' userInfo.priv = 'User' userInfo.home_dir = '' userInfo.comment = 'Munkaallomas DCDB konyvtarral' myRc = NetAdd(NETUSERINITDCDB, 'userInfo', SrvName) if myRc <> '0' then do say 'Hiba a NetAdd() végrehajtása közben:' myRc call DropLsRxutFuncs exit 9 end else do say say 'Sikeresen végrehajtva!' end call DropLsRxutFuncs call RxFuncDrop 'LoadLsRxutFuncs' exit
A NetDelete függvények
A NetAdd függvények ellentettje a NetDelete függvénycsalád. Az általános alak a következô:
Rc = NetDelete(opció, paraméter1, paraméter2, paraméter3)
Az alábbi táblázatban ismét összefoglaltuk az opciók lehetséges értékeit:
| Opció: | Jelentés: |
| NETACCESS | Adott erôforrás ACP-jének törlése. |
| NETACCESSDEL | Törli egy adott ACP adott mezejét. |
| NETALIAS | Alias definíció törlése. |
| NETAPP | Törli az alkalmazás definícióját. |
| NETAPPSEL | Törli a választott alkalmazást a felhasználó alkalmazáslistájából. |
| NETDASD | Könyvtárkorlátozások törlése. |
| NETFILECLOSE | Bezárja a kijelölt fájlt. |
| NETGROUP | Csoport törlése. |
| NETGROUPUSERS | Felhasználó törlése egy adott csoportból. |
| NETLOGONASN | Belépési hozzárendelés törlése. |
| NETMESSAGENAME | Név törlése az üzenettáblából. |
| NETPRINTJOB | Nyomtatási feladat törlése a várakozási listából. |
| NETSESSION | Szekció megszakítása. |
| NETSHARE | Megosztás (share) törlése. |
| NETUSE | Megosztás felhasználásának törlése. |
| NETUSER | Felhasználó eltávolítása. |
Viszonylag gyakran elôforduló mûvelet lehet print törlése a várakozási listából. Erre mutat példát az alábbi program:
/* Törli a print jobokat */ call RxFuncAdd 'LoadLsRxutFuncs', 'LSRXUT', 'LoadLsRxutFuncs' call LoadLsRxutFuncs NETPRINTJOB = 110 SrvName = '\\WARPY' QueueName = 'IBM4019L' JobId = 6 myRc = NetDelete(NETPRINTJOB, SrvName, QueueName, JobId) if myRc <> '0' then do say 'Hiba a NetDelete() végrehajtása közben:' myRc call DropLsRxutFuncs exit 9 end else do say 'A print sikeresen törölve.' say end call DropLsRxutFuncs call RxFuncDrop 'LoadLsRxutFuncs' exit
A NetEnumerate függvények
A NetEnumerate függvények segítségével információt gyûjthetünk össze. A függvények általános szintaktikája a következô:
Rc = NetEnumerate(opció, 'összetett_változó', paraméter1, paraméter2, paraméter3)
Az opció határozza meg, hogy mirôl szeretnénk információt kapni. A függvényhívás eredménye az összetett változóban kerül eltárolásra. Az alábbi táblázatban megadtuk az ebben az esetben felhasználható opciókat:
| Opció: | Jelentés: |
| NETACCESS | Felsorolja azokat az eszközöket, amelyeknek ACP-je van. |
| NETALIAS | Felsorolja a megadott típusú alias-eket. |
| NETAPP | Felsorolja a megadott típusú alkalmazásokat. |
| NETBIOS | Felsorolja a hálózati meghajtókkal kapcsolatos információkat. |
| NETCHARDEV | Felsorolja a rendszerben található soros portokat. |
| NETCHARDEVQ | Felsorolja a rendszerben található soros portok várakozási sorait. |
| NETCONNECTION | Felsorolja a szerverrel vagy a szerverrôl létesített kapcsolatokat. Megegyezik a NetGetInfo(NETCONNECTION) függvénnyel. |
| NETDASD | Felsorolja azokat a könyvtárakat, amelyekre korlátozásokat léptettek életbe. |
| NETFILE | Információt ad az éppen használt fájlokról. |
| NETGROUP | Felsorolja az összes csoportot. |
| NETLOGON | Felsorolja a bejelentkezett felhasználókat. |
| NETMESSAGENAME | Felsorolja az üzenettáblában található neveket. |
| NETPRINTDEST | Felsorolja a printereket. |
| NETPRINTDRIVER | Felsorolja a printermeghajtókat. |
| NETPRINTJOB | Felsorolja a várakozó nyomtatási feladatokat. |
| NETPRINTPORT | Felsorolja a printerportokat. |
| NETPRINTQPROC | Felsorolja a printprocesszorokat. |
| NETPRINTQUEUE | Felsorolja a printerek várakozási listáit. |
| NETSERVERDISK | Felsorolja a (merev)lemezeket. |
| NETSERVER | Felsorolja a hálózaton található szervereket. |
| NETSERVICE | Felsorolja az éppen futó szolgáltatásokat. |
| NETSESSION | Felsorolja azokat a gépeket, amelyek kapcsolódnak a szerverhez. |
| NETSHARE | Felsorolja a megosztásokat. |
| NETUSE | Felsorolja a felhasznált megosztásokat. |
| NETUSER | Felsorolja a definiált felhasználókat. |
| NETUSERGROUPS | Felsorolja mindazon csoportokat, amelyeknek tagja az adott felhasználó. Megegyezik a NetGetInfo(USERGROUPS) függvénnyel. |
A NetEnumerate függvénycsaláddal kapcsolatban nézzünk most meg egy példát, amely a NETDASD opciót használja a könyvtár-korlátozások felderítésére.
/* Felsorolja a DASD könyvtár-korlátozásokat */
call RxFuncAdd 'LoadLsRxutFuncs', 'LSRXUT', 'LoadLsRxutFuncs'
call LoadLsRxutFuncs
NETDASD = 750
DASDInfo.DirPath = 'D:\APPS\DATA'
DASDInfo.recursive = 1
DASDInfo.BufferSize = 4096
SrvName = '\\DOMAIN_CONTRLR'
myRc = NetEnumerate(NETDASD, 'DASDInfo', SrvName)
tf myRc <> '0' then
do
say 'Hiba a NetEnumerate() függvény végrehajtása közben:' myRc
exitRc = 9
end
else
do
say 'A következô könyvtár-korlátozások vannak érvényben:'
say 'A létezô korlátozások száma: 'DASDInfo.EntriesAvail
say 'A visszaadott korlátozások száma: 'DASDInfo.count
say 'Az elsô könyvtár elérési útvonala: 'DASDInfo.1.resource_name
say 'Az elsô korlátozás mérete: 'DASDInfo.1.max
say 'A korlátozás kihasználtsága: 'DASDInfo.1.use
say 'Küszöbérték: 'DASDInfo.1.thresh
say 'Jelzési küszöbérték: 'DASDInfo.1.delta
exitRc = 0
end
call DropLsRxutFuncs
call RxFuncDrop 'LoadLsRxutFuncs'
exit exitRc
A NetGetInfo függvények
Ezek a függvények elsôsorban információszerzésre használhatóak. Az általános szintaktika a következô:
MyRc = NetGetInfo(opció, 'összetett_változó', paraméter1, paraméter2, paraméter3)
Az opciók lehetséges értékeit az alábbi táblázatban láthatjuk:
| Opció: | Jelentés: |
| NETACCESS | Visszaadja a megadott erôforrás/eszköz ACP-jét. |
| NETACCESSUSERPERMS | Visszaadja a megadott felhasználó vagy csoport egy adott erôforrással kapcsolatos jogait. |
| NETALIAS | Információt szolgáltat a megadott alias-ról. |
| NETAPP | Információt szolgáltat a megadott alkalmazásról. |
| NETAPPSEL | Információt szolgáltat a megadott felhasználó, alkalmazás gyûjtôjében szereplô alkalmazásokról. |
| NETBIOS | Információt szolgáltat a telepített hálózati meghajtókról. |
| NETCHARDEV | Információt szolgáltat a megadott szerver valamelyik megosztott soros eszközérôl. |
| NETCHARDEVQ | Információt szolgáltat a megadott szerver valamelyik megosztott soros eszközének várakozási soráról. |
| NETCONNECTION | Visszaadja a szerverrel vagy a szerverrôl létesített kapcsolatok listáját. Megegyezik a NetEnumerate(NETCONNECTION) függvénnyel. |
| NETDASD | Információt szolgáltat a megadott könyvtárral kapcsolatos korlátozásokról. |
| NETLOGON | Információt szolgáltat a belépett felhasználókról. |
| NETFILE | Információt szolgáltat a szerveren megnyitott fájlról. |
| NETFINDADDRESS | Visszaadja a megadott NETBIOS névhez tartozó LAN címet vagy címeket. |
| NETGROUP | Információt szolgáltat egy csoportról. |
| NETGROUPUSERS | Visszaadja a magadott csoport felhasználóit. |
| NETLOGONASN | Információt szolgáltat a megadott felhasználó belépési hozzárendeléseirôl. |
| NETMESSAGENAME | Információt szolgáltat az üzenettáblában található felhasználóról. |
| NETMESSAGELOGFILE | Megadja az üzenetek naplófájljának nevét és állapotát. |
| NETPRINTDEST | Információt szolgáltat a megadott nyomtatóról. |
| NETPRINTJOB | Információt szolgáltat a megadott nyomtatási feladatról. |
| NETPRINTQUEUE | Információt szolgáltat a megadott nyomtatási várakozási sorról. |
| NETSERVER | Információt szolgáltat a megadott kiszolgálóról. |
| NETSERVERMODALS | További információt szolgáltat a megadott kiszolgálóról. |
| NETSERVICE | Információt nyújt a megadott szolgáltatásról. |
| NETSESSION | Információt szolgáltat a megadott kapcsolatról. |
| NETSHARE | Információt szolgáltat a megadott kiajánlásról. |
| NETSHARECHECK | Információt szolgáltat a megadott kiajánlásról. |
| NETSTATISTICS | Statisztikai információkat nyújt a megadott szolgáltatásról. |
| NETUSE | Információt szolgáltat a megadott kiajánlás felhasználásáról. |
| NETUSER | Információt szolgáltat a megadott felhasználóról. |
| NETUSERGROUPS | Visszaadja mindazon csoportok nevét, amelyben a megadott felhasználó szerepel. Megegyezik a NetEnumerate(NETUSERGROUPS) függvénnyel. |
| NETUSERMODALS | Információt szolgáltat a definiált csoportokról és felhasználókról. |
| NETWKSTA | Információt szolgáltat a LAN Requester konfigurációjáról. |
Példaképpen nézzük meg, hogy hogyan lehet a NETLOGON opciót használni a kiszolgálóra belépett felhasználók kilistázására:
/* Információt szolgáltat a szerverre belépett felhasználókról */
call RxFuncAdd 'LoadLsRxutFuncs', 'LSRXUT', 'LoadLsRxutFuncs'
call LoadLsRxutFuncs
NETLOGON = 50
SrvName = '\\MYSERVER'
myRc = NetGetInfo(NETLOGON, 'logonInfo', SrvName)
if myRc <> '0' then
do
say 'Hiba a NetGetInfo() végrehajtása közben:' myRc
call DropLsRxutFuncs
exit 9
end
if logonInfo.num_entries <> 0 then
do
say "Felhasználók száma: " logonInfo.num_entries
do i=1 to logonInfo.num_entries
say
say "Belépési név: " logonInfo.i.eff_name
say "Munkaállomás: " logonInfo.i.computer
say "Teljes név : " logonInfo.i.full_name
say "Megjegyzés : " logonInfo.i.usrcomment
say "Belépési idô: " logonInfo.i.logon_time
end
end
call DropLsRxutFuncs
call RxFuncDrop 'LoadLsRxutFuncs'
exit
A NetMisc függvények
A NetMisc függvények azon függvényekbôl tevôdnek össze, amelyek nem nagyon illenek bele az elôbbi függvénycsoportok egyikébe sem. Általános alakjuk megegyezik az eddig megismert függvényekével:
Rc = NetMisc(opció, 'összetett_változó', paraméter1, paraméter2, paraméter3) Rc = NetMisc(opció, paraméter1, paraméter2, paraméter3)
Az opciókból itt is van egy jó pár, ezért ismét megtöltöttünk velük egy táblázatot:
| Opció: | Jelentés: |
| NETACCESSCHECK | Ellenôrzi, hogy a felhasználónak joga van-e használni a megadott erôforrást. |
| NETACCESSAPPLY | Kiterjeszti a megadott elérési jogokat a megadott alkönyvtárra és annak alkönyvtáraira. Nem alkalmazható a LAN Server rendszerkönyvtárakra. |
| NETAUDITLOGCLEAR | Kitakarítja az audit logot. |
| NETDASDCHECK | Megmondja a könyvtárkorlátozás értékét és azt, hogy ebbôl eddig mennyit használtak fel. |
| NETDASDCONTROL | Elôkészíti a könyvtárat a korlátozás életbeléptetésére. |
| NETERRORLOGCLEAR | Kitakarítja az error logot. |
| NETERRORLOGREAD | Beolvas egy egységet az error logból. |
| NETERRORLOGWRITE | Kiír egy egységet az error logba. |
| NETMESSAGEBUFFERSEND | Elküld egy információs puffert a megadott névre. |
| NETMESSAGEFILESEND | Elküld egy fájlt a megadott névre. |
| NETMESSAGENAMEFWD | Megváltoztatja az üzenettáblát, hogy az adott névre küldött üzenetek egy másik névre továbbítódjanak. |
| NETMESSAGENAMEUNFWD | Leállítja az üzenetek más névre történô továbbítását. |
| NETREMOTECOPY | A kiszolgálón átmásol egy fájlt. |
| NETREMOTEMOVE | A kiszolgálón elmozgat egy fájlt. |
| NETREMOTETOD | Letölti a kiszolgálóról az idôt. |
| NETSERVERADMINCMD | Végrehajt egy programot a kiszolgálón. |
| NETUSERDCDBINIT | Inicializálja a megadott felhasználó adatait a Domain Controller adatbázisában. |
| NETUSERVALIDATE | Ellenôrzi a megadott felhasználó definícióját. |
A Misc függvényekhez kapcsolódó példánk az idôletöltést demonstrálja:
/* Letölti a szerverrôl az idôt */ call RxFuncAdd 'LoadLsRxutFuncs', 'LSRXUT', 'LoadLsRxutFuncs' call LoadLsRxutFuncs NETREMOTETOD = 700 SrvName = '\\OS2RULEZ' myRc = NetMisc(NETREMOTETOD, 'VarRet', SrvName) if myRc <> '0' then do say 'Hiba a NetMisc() végrehajtása közben:' myRc rcCode = 9 end else do say 'A jelenlegi óra : ' VarRet.tod_hours say 'A jelenlegi perc : ' VarRet.tod_mins say 'A jelenlegi másodperc: ' VarRet.tod_secs say 'A jelenlegi nap : ' VarRet.tod_day say 'A jelenlegi hónap : ' VarRet.tod_month say 'A jelenlegi év : ' VarRet.tod_year say 'A hét napja : ' VarRet.tod_weekday rcCode = 0 end call DropLsRxutFuncs call RxFuncDrop 'LoadLsRxutFuncs' exit rcCode
A NetSetInfo függvények
Míg az elôzô függvények többsége információ lekérdezésére szolgált, a NetSetInfo függvények a már beállított információ megváltoztatását, azaz bizonyos paraméterek átállítását teszik lehetôvé. Már csak a teljesség kedvéért említjük meg a függvények általános alakját, amely teljes mértékben megegyezik az eddig megszokottal:
Rc = NetSetInfo(opció, 'összetett_változó', paraméter1, paraméter2, paraméter3) Rc = NetSetInfo(opció, paraméter1, paraméter2, paraméter3)
Természetesen most sem úszhatjuk meg az opció paraméterek táblázatának bemutatása nélkül ezt a fejezetet:
| Opció: | Jelentés: |
| NETACCESS | Módosítja a megadott erôforrás ACP-jét. |
| NETALIAS | Módosítja a megadott alias definíciót. |
| NETAPP | Módosítja a megadott alkalmazás-definíciót. |
| NETDASD | Módosítja a megadott könyvtárkorlátozást. |
| NETEXPIREPASSWORD | Visszavonja a megadott felhasználó jelszavának érvényességét. |
| NETGROUP | Módosítja a megadott csoportdefiníció megjegyzését. |
| NETGROUPUSERS | Beosztja a megadott felhasználót a kívánt csoportba. |
| NETHOMEDIR | Módosítja a felhasználó könyvtárának definícióját. |
| NETMESSAGELOGFILE | Módosítja az üzenetek naplófájljának nevét és állapotát. |
| NETSERVER | Módosítja a megadott kiszolgáló valamelyik beállítási paraméterét. |
| NETSERVERMODALS | A kiszolgálóval kapcsolatos információkat változtat meg a felhasználói definíciókat tartalmazó adatbázisban. |
| NETUSER | Módosítja a megadott felhasználó definícióját. |
| NETUSERMODALS | Az összes felhasználóra és csoportra érvényes (globális) beállításokon módosít. |
| NETUSERGROUPS | Beállítja, hogy a megadott felhasználó mely csoportokba tartozzon. |
| NETUSERPASSWORD | Megváltoztatja a felhasználó jelszavát. |
| NETWKSTA | Módosítja a requester konfigurációját. |
Mostanra már szinte elmaradhatatlan példaprogramunk a felhasználó jelszavának megváltoztatását mutatja be.
/* Módosítja a felhasználó jelszavát */ call RxFuncAdd 'LoadLsRxutFuncs', 'LSRXUT', 'LoadLsRxutFuncs' call LoadLsRxutFuncs NETUSERPASSWORD = 260 SrvName = '\\TEST' UserId = 'KA1524' OldPw = 'OLDPASS' NewPw = 'NEWPASS' myRc = NetSetInfo(NETUSERPASSWORD, SrvName, UserId, OldPw, NewPw) if myRc <> '0' then do say 'Hiba a NetSetInfo() végrehajtása közben:' myRc call DropLsRxutFuncs exit 9 end else do say 'A jelszó megváltoztatása sikerült!' say end call DropLsRxutFuncs call RxFuncDrop 'LoadLsRxutFuncs' exit
Zsilip funkciók
Az LSRXUT.DLL-ben található függvények utolsó csoportja a (többnyire) lokális zsilip manipulálására szolgál. A függvények szintaktikája eléggé eltérô, ezért általános definíció nem igazán adható. Alábbi táblázatunkban összefoglaltuk a zsilipfüggvényeket és azok funkcióját.
| Függvény: | Jelentés: |
| RxSplControlDevice | A printerport vezérlésére (felfüggesztés, újraindítás stb.) szolgál. |
| RxSplCreateDevice | Printerport definiálására szolgál. A megfelelô drivernek telepítve kell lennie. |
| RxSplCreateQueue | Várakozási sor létrehozása. |
| RxSplDeleteDevice | Törli a kívánt printerportot. |
| RxSplDeleteJob | Törli a kívánt printerfeladatot. |
| RxSplDeleteQueue | Törli a kívánt várakozási sort. |
| RxSplEnumDevice | Felsorolja a printerportokat. |
| RxSplEnumDriver | Felsorolja a printerek meghajtóit. |
| RxSplEnumJob | Felsorolja a printfeladatokat. Megegyezik a NetEnumerate(NETPRINTJOB) függvénnyel. |
| RxSplEnumPort | Felsorolja a printerportok neveit. |
| RxSplEnumPrinter | Felsorolja a lehetséges nyomtatási lehetôségeket. |
| RxSplEnumQueue | Felsorolja a várakozási sorokat. |
| RxSplHoldJob | Visszatartja a kívánt nyomtatási feladatot. |
| RxSplHoldQueue | Szünetelteti a kívánt várakozási sort. |
| RxSplPurgeQueue | Eltávolítja a sorban várakozó feladatokat. |
| RxSplQueryDevice | Információt szolgáltat a megadott nyomtató-definícióról. |
| RxSplQueryJob | Információt szolgáltat a megadott nyomtatási feladatról. Megegyezik a netGetInfo(NETPRINTJOB) függvénnyel. |
| RxSplQueryQueue | Információt szolgáltat a megadott várakozási sorról. |
| RxSplReleaseJob | Elengedi a felfüggesztett nyomtatási feladatot. |
| RxSplReleaseQueue | Üzembe helyezi a felfüggesztett várakozási sort. |
| RxSplSetJob | Módosítja a nyomtatási feladat beállítását. |
Végezetül tekintsünk meg egy példaprogramot, amely egy nyomtatási feladatot töröl a megadott várakozási sorból!
/* Törli a megadott nyomtatási feladatot */
if RxFuncQuery('RxSplDeleteJob') <> 0 then
do
call RxFuncAdd 'LoadLsRxutFuncs', 'LSRXUT', 'LoadLsRxutFuncs'
call LoadLsRxutFuncs
end
ComputerName = '\\PRTSRV'
QueueName = 'IBM4019L'
JobId = 2
MyRc = RxSplDeleteJob(ComputerName, QueueName, JobId)
if MyRc <> '0' then
do
say 'Hiba az RxSplDeleteJob() végrehajtása közben:' MyRc
exit 9
end
else
say 'A nyomtatási feladat (ID='JobId') sikeresen törölve!'
exit
REXX GYÍK:
K1. Az LSRXUT.DLL Lan Server 3.0-hoz kiadott verziójához kifejlesztett REXX programok fognak-e futni, ha lecserélem a DLL-t az újabb (Lan Server 4, vagy magasabb) verzióra?
V1. Igen, ha átírjuk az lecke elsô részében kiemelt 3 függvényt, amely a DLL-ben található függvények regisztrálását végzi. Visszafelé sajnos nem minden esetben mûködik a dolog, mivel az újabb verziójú DLL-ek olyan függvényeket is tartalmaznak, amelyek csak Lan Server 4, vagy magasabb alatt mûködnek.
Gyakorlatok:
1. Írjon egy programot, amely figyeli a megosztások számát és figyelmeztet, ha megközelítettük a maximumot!
| Kádár Zsolt 1998. 12. 06. | [ Következô lecke | Tartalom ] |