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 |
|