I. Lan Server REXX
Автор: Kádár Zsolt
Дата: 06.12.1998
Источник: https://xenia.sote.hu
Язык: Венгерский
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 |
|