home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / lsmt213c.zip / chgalias.cmd < prev    next >
OS/2 REXX Batch file  |  1998-01-22  |  9KB  |  235 lines

  1. /*---------------------------------------------------------------------------*\
  2. |  Change Alias Name & Assignments            (C) Alain Rykaert - NOV97-DEC97 |
  3. \*---------------------------------------------------------------------------*/
  4.     Version = '1.02'
  5.     Say '* CHGALIAS Version' Version
  6.  
  7.     Parse Upper Arg ServerName OldAliasName NewAliasName
  8.  
  9.     Call Init                                   /* load DLL's & other stuff*/
  10.  
  11.     If ServerName = '' | OldAliasName = ''
  12.       Then Do
  13.              Say '*'
  14.              Say '* Change an Alias name & logon assignments'
  15.              Say '*'
  16.              Say '* Usage: CHGALIAS {PrimaryDomainController} {OldAliasName} {NewAliasName}'
  17.              Say '*'
  18.              Say '* Sample: CHGALIAS \\DC01 ALIAS1 ALIAS01'
  19.              Say '*'
  20.              Exit
  21.            End
  22.       Else Nop
  23.  
  24.     ServerName = Strip(ServerName,'L','\')
  25.  
  26.     Say '* Check if \\'ServerName 'is a Primary Domain Controller'
  27.     RC = NetGetInfo(370, 'ServerModalInfo', '\\'ServerName)
  28.     If RC = 0
  29.       Then Do
  30.              ServerRole = ServerModalInfo.Role
  31.              If WordPos('Primary', ServerRole)
  32.                Then Nop
  33.                Else Do
  34.                       Say '! This is not a Primary Domain Controller' '07'x
  35.                       Exit
  36.                     End
  37.            End
  38.       Else Call ChkError RC
  39.  
  40.     If NewAliasName = ''
  41.      Then Nop
  42.      Else Do
  43.             Say '* Check if the new alias' NewAliasName 'already exist'
  44.             RC = NetGetInfo(20, 'AliasInfo', '\\'ServerName, NewAliasName)
  45.             If RC = 0
  46.               Then Do
  47.                      Say '! Alias' NewAliasName 'already exist' '07'x
  48.                      Exit
  49.                    End
  50.               Else Nop
  51.           End
  52.  
  53.     Say '* Get information from the old alias' OldAliasName
  54.     RC = NetGetInfo(20, 'AliasInfo', '\\'ServerName, OldAliasName)
  55.     If RC = 0
  56.       Then Do
  57.              LogFileName = OldAliasName || '.log'
  58.              Say '* Log FileName:' LogFileName
  59.              If Stream(LogFileName, 'C', 'Query Exists') = ''
  60.                Then Nop
  61.                Else 'del' LogFileName
  62.              Call Logit LogFileName '*' Date('E') Time()
  63.              Call Logit LogFileName '* Set' OldAliasName '<- to ->' NewAliasName
  64.              Say '  Name       :' AliasInfo.Name
  65.              Say '  Remark     :' AliasInfo.Remark
  66.              Say '  Server     :' AliasInfo.Server
  67.              Say '  NetName    :' AliasInfo.Netname
  68.              Say '  Location   :' AliasInfo.Location
  69.              Say '  Mode       :' AliasInfo.Mode
  70.              Say '  Max uses   :' AliasInfo.Maxuses
  71.              Say '  Type       :' AliasInfo.Type
  72.              Say '  Queue      :' AliasInfo.Queue
  73.              Say '  Path       :' AliasInfo.Path
  74.              Say '  Priority   :' AliasInfo.Priority
  75.              Say '  Device pool:' AliasInfo.Device_pool
  76.              Say
  77.              Call Logit LogFileName 'Name       :' AliasInfo.Name
  78.              Call Logit LogFileName 'Remark     :' AliasInfo.Remark
  79.              Call Logit LogFileName 'Server     :' AliasInfo.Server
  80.              Call Logit LogFileName 'NetName    :' AliasInfo.Netname
  81.              Call Logit LogFileName 'Location   :' AliasInfo.Location
  82.              Call Logit LogFileName 'Mode       :' AliasInfo.Mode
  83.              Call Logit LogFileName 'Max uses   :' AliasInfo.Maxuses
  84.              Call Logit LogFileName 'Type       :' AliasInfo.Type
  85.              Call Logit LogFileName 'Queue      :' AliasInfo.Queue
  86.              Call Logit LogFileName 'Path       :' AliasInfo.Path
  87.              Call Logit LogFileName 'Priority   :' AliasInfo.Priority
  88.              Call Logit LogFileName 'Device pool:' AliasInfo.Device_pool
  89.            End
  90.       Else Call ChkError RC
  91.  
  92.     Say '* Get all users from \\'ServerName
  93.     RC = NetEnumerate(280, 'UserID', '\\'ServerName)
  94.     Say RC
  95.     If RC = 0
  96.       Then Do
  97.              If RXUtils                         /* if RXutils DLL available*/
  98.                Then Do
  99.                       Say '* Sort all users'
  100.                       Call RxStemSort 'UserID'
  101.                     End
  102.                Else Nop
  103.              Say '* Get all users with a logon assignment to this alias'
  104.              k = 0
  105.              Do i = 1 to UserID.0
  106.                Counter = '('Right(i,Length(UserID.0))'/'Right(UserID.0,Length(UserID.0))')'
  107.                Say Counter UserID.i
  108.                Call NetGetInfo 52, 'LogonAsnInfo', '\\'ServerName, UseriD.i
  109.                Do j = 1 to LogonAsnInfo.Count
  110.                  If LogonAsnInfo.j.Alias = OldAliasName
  111.                    Then Do
  112.                           k = k + 1
  113.                           FoundUserID.k = UserID.i
  114.                           FoundDevice.k = LogonAsnInfo.j.Device
  115.                           Text = Counter Left(UserID.i,8) LogonAsnInfo.j.Device
  116.                           Say ' ' Text
  117.                           Call Logit LogFileName Text
  118.                         End
  119.                    Else Nop
  120.                  LogonAsnInfo.j.Alias = ''
  121.                End
  122.              End
  123.              FoundUserID.0 = k
  124.            End
  125.       Else Call ChkError RC
  126.  
  127.     If NewAliasName = ''
  128.      Then Nop
  129.      Else Do
  130.             Say '* Delete old Alias definitions' OldAliasName
  131.             RC = NetDelete(20, '\\'ServerName, OldAliasName)
  132.             If RC = 0
  133.               Then Call Logit LogFileName 'Alias' OldAliasName 'deleted'
  134.               Else Call ChkError RC
  135.  
  136.             Say '* Add new Alias definitions' NewAliasName
  137.             AliasInfo.Name = NewAliasName
  138.             RC = NetAdd(20, 'AliasInfo', '\\'ServerName)
  139.             If RC = 0
  140.               Then Call Logit LogFileName 'Alias' NewAliasName 'added'
  141.               Else Call ChkError RC
  142.  
  143.             Say '* Update logon assignments'
  144.             Do i = 1 to FoundUserID.0
  145.               Counter = '('Right(i,Length(FoundUserID.0))'/'Right(FoundUserID.0,Length(FoundUserID.0))')'
  146.               Say ' ' Counter Left(FoundUserID.i,8) FoundDevice.i
  147.               RC = NetDelete(52, '\\'ServerName, FoundUserID.i, OldAliasName)
  148.               If RC = 0
  149.                 Then Nop
  150.                 Else Call ChkError RC
  151.               RC = NetAdd(52, '\\'ServerName, NewAliasName, FoundDevice.i, FoundUserID.i)
  152.               If RC = 0
  153.                 Then Nop
  154.                 Else Call ChkError RC
  155.             End
  156.           End
  157.  
  158.     Say '* Log File' LogFileName 'created'
  159.  
  160.     Exit
  161.  
  162.  INIT:/* --------------------------------------------------------------------*/
  163.  
  164.    '@echo off'
  165.     BootDrive = Left(Value('COMSPEC',,'OS2ENVIRONMENT'),2)
  166.  
  167.     If RxFuncQuery('SysLoadFuncs')
  168.       Then Do
  169.              Call RxFuncAdd SysLoadFuncs, RexxUtil, SysLoadFuncs
  170.              Call SysLoadFuncs
  171.            End
  172.       Else Nop
  173.  
  174.     LSRDrive = ''                      /* Check for Lan Server Drive Letter*/
  175.     PPath = Value('PATH',,'OS2ENVIRONMENT')
  176.     x = Pos('IBMLAN\NETPROG', PPath) -3
  177.     If x > 0
  178.       Then LSRDrive = SubStr(PPath, x, 2)
  179.       Else Do
  180.              Say '* Could not determine the Lan Requester path' '07'x
  181.              Exit
  182.            End
  183.  
  184.     If Stream(LSRDrive'\ibmlan\netlib\lsrxut.dll', 'C', 'Query Exists') <> ''
  185.       Then Do
  186.              If RxFuncQuery('LoadLSRXUTFuncs')
  187.                Then Do
  188.                       Call RxFuncAdd LoadLsRxutFuncs, LSRXUT, LoadLsRxutFuncs
  189.                       Call LoadLsRxutFuncs
  190.                     End
  191.                Else Nop
  192.              Say '* LSRXUT.DLL Version' LSRXUTVER()
  193.            End
  194.       Else Do
  195.              Say '* Could not find' LSRDrive'\IBMLAN\NETLIB\LSRXUT.DLL' '07'x
  196.              Exit
  197.            End
  198.  
  199.     If Stream(BootDrive'\os2\dll\rxutils.dll', 'C', 'Query Exists') <> ''
  200.       Then Do
  201.              If RxFuncQuery('RxLoadFuncs')
  202.                Then Do
  203.                       Call RxFuncAdd RxLoadFuncs, RXUTILS, RxLoadFuncs
  204.                       Call RxLoadFuncs
  205.                     End
  206.                Else Nop
  207.              Say '* RXUTILS.DLL Version' RXUtilsVer()
  208.              RXUtils = 1
  209.            End
  210.       Else Do
  211.              Say '! Could not find' BootDrive'\os2\dll\rxutils.dll'
  212.              RXUtils = 0
  213.            End
  214.  
  215.     Return
  216.  
  217.  CHKERROR:/* ----------------------------------------------------------------*/
  218.  
  219.     Parse Arg RCode
  220.  
  221.     Say '! Error:' RCode '07'x
  222.     Exit
  223.  
  224.     Return
  225.  
  226.  LOGIT:/* -------------------------------------------------------------------*/
  227.  
  228.     Parse Arg LogFileName LogText
  229.  
  230.     Call LineOut LogFileName, LogText
  231.     Call Stream LogFileName, 'C', 'Close'
  232.  
  233.     Return
  234.  
  235.