Hitachi

JP1 Version 12 JP1/IT Desktop Management 2 - Asset Console アクセス定義ファイル作成ガイド


2.2.6 ディレクトリ情報の操作

組み込み関数$LDAPACSを使用すると、ディレクトリサービスへの接続認証、検索、エントリの取得、属性の取得などができます。

ここでは、組み込み関数$LDAPACSで使用できる関数およびオブジェクト操作規則について説明します。

〈この項の構成〉

(1) 組み込み関数$LDAPACSで使用できる関数

組み込み関数$LDAPACSで使用できる関数と機能を次の表に示します。

表2‒2 組み込み関数$LDAPACSで使用できる関数一覧

関数名

機能

CONNECT

ディレクトリサービスへの接続認証

CONVERT

ディレクトリ情報の検索用文字列への変換

DISCONNECT

ディレクトリサービスとの接続解除

FIRSTENTRY

最初に検索されたエントリの取得

FREEENTRY

エントリの解放

FREERESULT

検索結果の解放

GETDN

エントリのDNの取得

NEXTENTRY

2番目以降に検索されたエントリの取得

SEARCH

ディレクトリサービスの検索

SELECTVALUE

属性値の取得

各関数の機能、記述形式、パラメーター、および戻り値については、「5. アクセス定義ファイルに記述する組み込み関数」の$LDAPACS(ディレクトリ情報へのアクセス関数)を参照してください。

(2) オブジェクトの操作規則

エントリの取得
  • 最初に検索されたエントリを取得しないで、2番目以降のエントリは取得できません。

  • 同じエントリは取得できません。

  • エントリの内容はスクリプトから変更、削除、および追加できません。

属性値の取得
  • 属性名称を指定して該当する属性値を取得できます。

  • 属性値はスクリプトから変更、削除、および追加できません。

  • 同一属性名称に対して複数の値がある場合には、SELECTVALUEを複数記述することで、値を順次指定できます。

オブジェクト変数の使用と参照
  • 一度解放したオブジェクト変数を、再度使用および参照することはできません。

(3) オブジェクトのメモリ管理構造

オブジェクトのメモリ管理構造を次の図に示します。

図2‒2 オブジェクトのメモリ管理構造

[図データ]

LDAPOBJ、LDAPRST、LDAPENT、およびLDAPATRは、その下位すべてのオブジェクトを管理します。そのため、LDAPOBJ、LDAPRST、LDAPENT、およびLDAPATRを解放すると、その下位のすべてのオブジェクトも解放されます。なお、KEYNAME、LDAPVAL、DN、SELVALなどの最下位文字列は、オブジェクト自身の解放はできません。

(4) 記述例

組み込み関数$LDAPACSの記述例を次に示します。

[VAR]
STATUS
MSG
HOST
PORT
FILTER
BASE
SCOPE
FIRST
LDOBJ
LDRST
LDENT
DN
NAME
 
[SET_VALUE]
  HOST = 'localhost'
  PORT = '389'
  BASE = 'ou=people,o=xxxxxxx.co.jp'
  SCOPE= 'LDAP_SCOPE_ONELEVEL'
 
[SET_VALUE]
  $LDAPACS('CONNECT',LDOBJ,HOST,PORT,'','')           # CONNECT
  STATUS = $GETSTATUS()
 
  [SET_VALUE]
    FILTER = '(&(objectclass=*)(title;lang-ja='
    FILTER = FILTER+$LDAPACS('CONVERT','主任')        # CONVERT
    FILTER = FILTER+'))'
    # FILETER=(&(objectclass=*)(title;lang-ja=\E4\B8\BB\E4\BB\BB))
 
    $LDAPACS('SEARCH',LDRST,LDOBJ,BASE,FILTER,SCOPE)  # SEARCH
    FIRST = 1
 
    [DO]
      [IF]
        FIRST = 1
        [THEN]
          [SET_VALUE]
            $LDAPACS('FIRSTENTRY',LDENT,LDRST)        # GET FIRST ENTRY
            STATUS = $GETSTATUS()
            FIRST = 0
        [ELSE]
          [SET_VALUE]
            $LDAPACS('NEXTENTRY',LDENT,LDRST)         # GET NEXT ENTRY
            STATUS = $GETSTATUS()
      [IF_END]
 
      [IF]
        STATUS = NORMAL
        [THEN]
          [SET_VALUE]
            $LDAPACS('GETDN',DN,LDENT)                # GET DN
            $LDAPACS('SELECTVALUE',NAME,LDENT,'cn')   # GET VALUE OF CN
            MSG='DN ['+DN+'] is '+NAME
            $ECHO(MSG)
            $LDAPACS('FREEENTRY',LDENT)               # FREE ENTRY OBJECT
        [ELSE]
          [SET_VALUE]
            $BREAK()
        [IF_END]
    [DO_END]
 
  [SET_VALUE]
    $LDAPACS('FREERESULT',LDRST)                      # FREE SEARCH OBJECT
 
[SET_VALUE]
  $LDAPACS('DISCONNECT',LDOBJ)                        # FREE LDAP OBJECT