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
1998. 12. 06.