I. Lan Server REXX

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ó:
GetDCNameMegadja a domain controller nevét.
CopyDirAclsÁtmásolja a forráskönyvtár elérési jogait a célkönyvtárra.
DumpAllUsersA felhasználókkal kapcsolatos információkat bináris fájlban tárolja el.
DumpUserEgy adott felhasználóval kapcsolatos információkat bináris fájlban tárolja el.
InsertAllUsersAz 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.
QueryDirAliasPathMegadja egy adott alias-hez tartozó könyvtár elérési útvonalát.
MoveDirAliasMódosítja a könyvtár alias-hez tartozó elérési utat.
SetLogonAsnA felhasználó belépésekor definiált hozzárendeléseket (logon assignment) adja meg.
GetLogonAsnLekérdezi a már definiált hozzárendeléseket.
NetEnumFelsorol néhány, a LAN Server által nyújtott információt.
GetLogonAsnAcpLeké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:
NETACCESS10
NETACCESSUSERPERMS12
NETALIAS20
NETAPP30
NETAPPSEL32
NETCONNECTION40
NETLOGON50
NETLOGONASN52
NETFILE60
NETGROUP70
NETMESSAGENAME80
NETBIOS90
NETPRINTDEST100
NETPRINTJOB110
NETPRINTQUEUE120
NETCHARDEV130
NETCHARDEVQ140
NETSERVERDISK150
NETSERVER160
NETSERVICE170
NETSESSION180
NETSHARE190
NETSTATISTICS195
NETSHARECHECK210
NETFILECLOSE220
NETHOMEDIR230
NETACCESSDEL240
NETACCESSADD250
NETUSERPASSWORD260
NETUSE270
NETUSER280
NETUSER2282
NETUSERINITDCDB290
NETPRINTPORT300
NETPRINTDRIVER310
NETPRINTQPROC320
NETUSERGROUPS330
NETGROUPUSERS340
NETWKSTA350
NETUSERMODALS360
NETSERVERMODALS370
NETEXPIREPASSWORD400
NETFINDADDRESS410
NETACCESSCHECK420
NETUSERVALIDATE2500
NETGETDCNAME510
NETACCESSAPPLY520
NETMESSAGEBUFFERSEND530
NETMESSAGEFILESEND540
NETMESSAGELOGFILE550
NETMESSAGENAMEFWD560
NETMESSAGENAMEUNFWD570
NETAUDITLOGCLEAR580
NETERRORLOGCLEAR640
NETERRORLOGREAD650
NETERRORLOGWRITE660
NETREMOTECOPY670
NETREMOTEEXEC680
NETREMOTEMOVE690
NETREMOTETOD700
NETSERVERADMINCMD710
NETUSERDCDBINIT720
NETDASDCHECK730
NETDASDCONTROL740
NETDASD750

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:
NETACCESSACP (access control profile = jogosultságok profilja) létrehozása.
NETACCESSADDACP hozzáadása.
NETALIASAlias létrehozása.
NETAPPAlkalmazás definiálása.
NETAPPSELHozzáadja a választott alkalmazást a felhasználó alkalmazáslistájához.
NETDASDKönyvtárkorlátozások beállítása.
NETGROUPCsoport létrehozása.
NETGROUPUSERSFelhasználó csoportba sorolása.
NETLOGONASNBelépési hozzárendelés megadása.
NETMESSAGENAMENév hozzáadása az üzenettáblához.
NETSHAREMegosztás (share) létrehozása.
NETUSEMegosztás felhasználása.
NETUSERFelhasználó létrehozása.
NETUSER2Felhasználó részletesebben specifikált létrehozása.
NETUSERINITDCDBFelhaszná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:
NETACCESSAdott erôforrás ACP-jének törlése.
NETACCESSDELTörli egy adott ACP adott mezejét.
NETALIASAlias definíció törlése.
NETAPPTörli az alkalmazás definícióját.
NETAPPSELTörli a választott alkalmazást a felhasználó alkalmazáslistájából.
NETDASDKönyvtárkorlátozások törlése.
NETFILECLOSEBezárja a kijelölt fájlt.
NETGROUPCsoport törlése.
NETGROUPUSERSFelhasználó törlése egy adott csoportból.
NETLOGONASNBelépési hozzárendelés törlése.
NETMESSAGENAMENév törlése az üzenettáblából.
NETPRINTJOBNyomtatási feladat törlése a várakozási listából.
NETSESSIONSzekció megszakítása.
NETSHAREMegosztás (share) törlése.
NETUSEMegosztás felhasználásának törlése.
NETUSERFelhaszná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:
NETACCESSFelsorolja azokat az eszközöket, amelyeknek ACP-je van.
NETALIASFelsorolja a megadott típusú alias-eket.
NETAPPFelsorolja a megadott típusú alkalmazásokat.
NETBIOSFelsorolja a hálózati meghajtókkal kapcsolatos információkat.
NETCHARDEVFelsorolja a rendszerben található soros portokat.
NETCHARDEVQFelsorolja a rendszerben található soros portok várakozási sorait.
NETCONNECTIONFelsorolja a szerverrel vagy a szerverrôl létesített kapcsolatokat. Megegyezik a NetGetInfo(NETCONNECTION) függvénnyel.
NETDASDFelsorolja azokat a könyvtárakat, amelyekre korlátozásokat léptettek életbe.
NETFILEInformációt ad az éppen használt fájlokról.
NETGROUPFelsorolja az összes csoportot.
NETLOGONFelsorolja a bejelentkezett felhasználókat.
NETMESSAGENAMEFelsorolja az üzenettáblában található neveket.
NETPRINTDESTFelsorolja a printereket.
NETPRINTDRIVERFelsorolja a printermeghajtókat.
NETPRINTJOBFelsorolja a várakozó nyomtatási feladatokat.
NETPRINTPORTFelsorolja a printerportokat.
NETPRINTQPROCFelsorolja a printprocesszorokat.
NETPRINTQUEUEFelsorolja a printerek várakozási listáit.
NETSERVERDISKFelsorolja a (merev)lemezeket.
NETSERVERFelsorolja a hálózaton található szervereket.
NETSERVICEFelsorolja az éppen futó szolgáltatásokat.
NETSESSIONFelsorolja azokat a gépeket, amelyek kapcsolódnak a szerverhez.
NETSHAREFelsorolja a megosztásokat.
NETUSEFelsorolja a felhasznált megosztásokat.
NETUSERFelsorolja a definiált felhasználókat.
NETUSERGROUPSFelsorolja 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:
NETACCESSVisszaadja a megadott erôforrás/eszköz ACP-jét.
NETACCESSUSERPERMSVisszaadja a megadott felhasználó vagy csoport egy adott erôforrással kapcsolatos jogait.
NETALIASInformációt szolgáltat a megadott alias-ról.
NETAPPInformációt szolgáltat a megadott alkalmazásról.
NETAPPSELInformációt szolgáltat a megadott felhasználó, alkalmazás gyûjtôjében szereplô alkalmazásokról.
NETBIOSInformációt szolgáltat a telepített hálózati meghajtókról.
NETCHARDEVInformációt szolgáltat a megadott szerver valamelyik megosztott soros eszközérôl.
NETCHARDEVQInformációt szolgáltat a megadott szerver valamelyik megosztott soros eszközének várakozási soráról.
NETCONNECTIONVisszaadja a szerverrel vagy a szerverrôl létesített kapcsolatok listáját. Megegyezik a NetEnumerate(NETCONNECTION) függvénnyel.
NETDASDInformációt szolgáltat a megadott könyvtárral kapcsolatos korlátozásokról.
NETLOGONInformációt szolgáltat a belépett felhasználókról.
NETFILEInformációt szolgáltat a szerveren megnyitott fájlról.
NETFINDADDRESSVisszaadja a megadott NETBIOS névhez tartozó LAN címet vagy címeket.
NETGROUPInformációt szolgáltat egy csoportról.
NETGROUPUSERSVisszaadja a magadott csoport felhasználóit.
NETLOGONASNInformációt szolgáltat a megadott felhasználó belépési hozzárendeléseirôl.
NETMESSAGENAMEInformációt szolgáltat az üzenettáblában található felhasználóról.
NETMESSAGELOGFILEMegadja az üzenetek naplófájljának nevét és állapotát.
NETPRINTDESTInformációt szolgáltat a megadott nyomtatóról.
NETPRINTJOBInformációt szolgáltat a megadott nyomtatási feladatról.
NETPRINTQUEUEInformációt szolgáltat a megadott nyomtatási várakozási sorról.
NETSERVERInformációt szolgáltat a megadott kiszolgálóról.
NETSERVERMODALSTovábbi információt szolgáltat a megadott kiszolgálóról.
NETSERVICEInformációt nyújt a megadott szolgáltatásról.
NETSESSIONInformációt szolgáltat a megadott kapcsolatról.
NETSHAREInformációt szolgáltat a megadott kiajánlásról.
NETSHARECHECKInformációt szolgáltat a megadott kiajánlásról.
NETSTATISTICSStatisztikai információkat nyújt a megadott szolgáltatásról.
NETUSEInformációt szolgáltat a megadott kiajánlás felhasználásáról.
NETUSERInformációt szolgáltat a megadott felhasználóról.
NETUSERGROUPSVisszaadja mindazon csoportok nevét, amelyben a megadott felhasználó szerepel. Megegyezik a NetEnumerate(NETUSERGROUPS) függvénnyel.
NETUSERMODALSInformációt szolgáltat a definiált csoportokról és felhasználókról.
NETWKSTAInformá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:
NETACCESSCHECKEllenôrzi, hogy a felhasználónak joga van-e használni a megadott erôforrást.
NETACCESSAPPLYKiterjeszti a megadott elérési jogokat a megadott alkönyvtárra és annak alkönyvtáraira. Nem alkalmazható a LAN Server rendszerkönyvtárakra.
NETAUDITLOGCLEARKitakarítja az audit logot.
NETDASDCHECKMegmondja a könyvtárkorlátozás értékét és azt, hogy ebbôl eddig mennyit használtak fel.
NETDASDCONTROLElôkészíti a könyvtárat a korlátozás életbeléptetésére.
NETERRORLOGCLEARKitakarítja az error logot.
NETERRORLOGREADBeolvas egy egységet az error logból.
NETERRORLOGWRITEKiír egy egységet az error logba.
NETMESSAGEBUFFERSENDElküld egy információs puffert a megadott névre.
NETMESSAGEFILESENDElküld egy fájlt a megadott névre.
NETMESSAGENAMEFWDMegváltoztatja az üzenettáblát, hogy az adott névre küldött üzenetek egy másik névre továbbítódjanak.
NETMESSAGENAMEUNFWDLeállítja az üzenetek más névre történô továbbítását.
NETREMOTECOPYA kiszolgálón átmásol egy fájlt.
NETREMOTEMOVEA kiszolgálón elmozgat egy fájlt.
NETREMOTETODLetölti a kiszolgálóról az idôt.
NETSERVERADMINCMDVégrehajt egy programot a kiszolgálón.
NETUSERDCDBINITInicializálja a megadott felhasználó adatait a Domain Controller adatbázisában.
NETUSERVALIDATEEllenô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:
NETACCESSMódosítja a megadott erôforrás ACP-jét.
NETALIASMódosítja a megadott alias definíciót.
NETAPPMódosítja a megadott alkalmazás-definíciót.
NETDASDMódosítja a megadott könyvtárkorlátozást.
NETEXPIREPASSWORDVisszavonja a megadott felhasználó jelszavának érvényességét.
NETGROUPMódosítja a megadott csoportdefiníció megjegyzését.
NETGROUPUSERSBeosztja a megadott felhasználót a kívánt csoportba.
NETHOMEDIRMódosítja a felhasználó könyvtárának definícióját.
NETMESSAGELOGFILEMódosítja az üzenetek naplófájljának nevét és állapotát.
NETSERVERMódosítja a megadott kiszolgáló valamelyik beállítási paraméterét.
NETSERVERMODALSA kiszolgálóval kapcsolatos információkat változtat meg a felhasználói definíciókat tartalmazó adatbázisban.
NETUSERMódosítja a megadott felhasználó definícióját.
NETUSERMODALSAz összes felhasználóra és csoportra érvényes (globális) beállításokon módosít.
NETUSERGROUPSBeállítja, hogy a megadott felhasználó mely csoportokba tartozzon.
NETUSERPASSWORDMegváltoztatja a felhasználó jelszavát.
NETWKSTAMó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:
RxSplControlDeviceA printerport vezérlésére (felfüggesztés, újraindítás stb.) szolgál.
RxSplCreateDevicePrinterport definiálására szolgál. A megfelelô drivernek telepítve kell lennie.
RxSplCreateQueueVárakozási sor létrehozása.
RxSplDeleteDeviceTörli a kívánt printerportot.
RxSplDeleteJobTörli a kívánt printerfeladatot.
RxSplDeleteQueueTörli a kívánt várakozási sort.
RxSplEnumDeviceFelsorolja a printerportokat.
RxSplEnumDriverFelsorolja a printerek meghajtóit.
RxSplEnumJobFelsorolja a printfeladatokat. Megegyezik a NetEnumerate(NETPRINTJOB) függvénnyel.
RxSplEnumPortFelsorolja a printerportok neveit.
RxSplEnumPrinterFelsorolja a lehetséges nyomtatási lehetôségeket.
RxSplEnumQueueFelsorolja a várakozási sorokat.
RxSplHoldJobVisszatartja a kívánt nyomtatási feladatot.
RxSplHoldQueueSzünetelteti a kívánt várakozási sort.
RxSplPurgeQueueEltávolítja a sorban várakozó feladatokat.
RxSplQueryDeviceInformációt szolgáltat a megadott nyomtató-definícióról.
RxSplQueryJobInformációt szolgáltat a megadott nyomtatási feladatról. Megegyezik a netGetInfo(NETPRINTJOB) függvénnyel.
RxSplQueryQueueInformációt szolgáltat a megadott várakozási sorról.
RxSplReleaseJobElengedi a felfüggesztett nyomtatási feladatot.
RxSplReleaseQueueÜzembe helyezi a felfüggesztett várakozási sort.
RxSplSetJobMó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 ]