Hitachi

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


$LDAPACS(ディレクトリ情報へのアクセス関数)

ディレクトリサービスへの接続認証、検索、エントリの取得、属性の取得など、ディレクトリ情報にアクセスできます。ただし、この組み込み関数を使用してディレクトリ情報を操作するには、ディレクトリ情報へのアクセス方法と関数を習得している必要があります。

〈このページの構成〉

形式

$LDAPACS(関数名,引数1(,引数2(,…)))

指定する値

注意事項

情報の取得に失敗した場合は、0バイトの文字列が返されます。

ディレクトリ情報へのアクセス関数で使用できる関数の詳細

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

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

関数名

機能

CONNECT

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

CONVERT

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

DISCONNECT

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

FIRSTENTRY

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

FREEENTRY

エントリの解放

FREERESULT

検索結果の解放

GETDN

エントリのDNの取得

NEXTENTRY

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

SEARCH

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

SELECTVALUE

属性値の取得

各関数の機能、記述形式、引数、および終了状態について、これ以降で説明します。終了状態は、組み込み関数$GETSTATUSで取得した終了状態によって異なります。

CONNECT

ディレクトリサービスに接続認証をして、ディレクトリ情報オブジェクトを返します。

形式
$LDAPACS('CONNECT',LDAPOBJ,HOST,PORT,USERDN,PASSWD)
引数

引数

指定型

説明

LDAPOBJ

ディレクトリ情報オブジェクト

ディレクトリ情報オブジェクトを設定する変数名を指定します。

HOST

変数、定数

ディレクトリサーバのホスト名またはIPアドレスを指定します。

PORT

変数、定数

ディレクトリサーバのポート番号を指定します。

USERDN

変数、定数

接続認証のためのユーザDNを指定します。

PASSWD

変数、定数

接続認証のためのパスワードを指定します。

終了状態

処理の終了状態とその内容を次に示します。

終了状態

内容

NORMAL

正常終了

NODATA

ERROR

引数の誤り

スクリプト中断

次のどれかを示す

  • ディレクトリの接続の際に、エラーが発生した

  • 認証エラー

  • そのほかのエラー

(凡例)

−:該当しない

CONVERT

ディレクトリサービスで検索するための文字列に変換します。

形式
返却値= $LDAPACS('CONVERT',SOURCE)
  • 返却値

    変換した文字列を設定する変数名を指定します。

引数

引数

指定型

説明

SOURCE

変数、定数

変換する文字列を指定します。

終了状態

処理の終了状態とその内容を次に示します。

終了状態

内容

NORMAL

正常終了

NODATA

ERROR

次のどちらかを示す

  • 変換失敗

  • 引数の誤り

スクリプト中断

次のどちらかを示す

  • 変数が定義されていない

  • そのほかのエラー

(凡例)

−:該当しない

DISCONNECT

ディレクトリサービスの接続解除およびその下位のオブジェクトをすべて解放します。

形式
$LDAPACS('DISCONNECT',LDAPOBJ)
引数

引数

指定型

説明

LDAPOBJ

ディレクトリ情報オブジェクト

CONNECTで求めたディレクトリ情報オブジェクトを指定します。

終了状態

処理の終了状態とその内容を次に示します。

終了状態

内容

NORMAL

正常終了

NODATA

ERROR

CONNECTで求めたディレクトリ情報オブジェクトではない

スクリプト中断

次のどちらかを示す

  • 変数が定義されていない

  • そのほかのエラー

(凡例)

−:該当しない

FIRSTENTRY

検索結果オブジェクトから最初に検索されたエントリオブジェクトを取得します。取得したオブジェクトを解放するためには、FREEENTRYを呼び出す必要があります。

形式
$LDAPACS('FIRSTENTRY',LDAPENT,LDAPRST)
引数

引数

指定型

説明

LDAPENT

エントリオブジェクト

エントリオブジェクトを設定する変数名を指定します。

LDAPRST

検索結果オブジェクト

検索結果オブジェクトを指定します。

終了状態

処理の終了状態とその内容を次に示します。

終了状態

内容

NORMAL

正常終了

NODATA

エントリがない

ERROR

次のどちらかを示す

  • SEARCHで求めた検索オブジェクトではない

  • 引数の誤り

スクリプト中断

そのほかのエラー

FREEENTRY

指定したエントリオブジェクトおよびその下位のオブジェクトをすべて解放します。

形式
$LDAPACS('FREEENTRY',LDAPENT)
引数

引数

指定型

説明

LDAPENT

エントリオブジェクト

エントリオブジェクトを指定します。

終了状態

処理の終了状態とその内容を次に示します。

終了状態

内容

NORMAL

正常終了

NODATA

ERROR

次のどちらかを示す

  • FIRSTENTRYまたはNEXTENTRYで求めたエントリオブジェクトではない

  • 引数の誤り

スクリプト中断

そのほかのエラー

(凡例)

−:該当しない

FREERESULT

指定した検索結果オブジェクトおよびその下位のオブジェクトをすべて解放します。

形式
$LDAPACS('FREERESULT',LDAPRST)
引数

引数

指定型

説明

LDAPRST

検索結果オブジェクト

検索結果オブジェクトを指定します。

終了状態

処理の終了状態とその内容を次に示します。

終了状態

内容

NORMAL

正常終了

NODATA

ERROR

次のどちらかを示す

  • SEARCHで求めた検索オブジェクトではない

  • 引数の誤り

スクリプト中断

そのほかのエラー

(凡例)

−:該当しない

GETDN

エントリオブジェクトから、識別名(文字列)を取得します。取得した文字列は解放できません。FREEENTRYを使用して、その上位のオブジェクトを解放する必要があります。

形式
$LDAPACS('GETDN',LDAPDN,LDAPENT)
引数

引数

指定型

説明

LDAPDN

DN識別名

DN識別名を設定する変数名を指定します。

LDAPENT

エントリオブジェクト

エントリオブジェクトを指定します。

終了状態

処理の終了状態とその内容を次に示します。

終了状態

内容

NORMAL

正常終了

NODATA

ERROR

次のどちらかを示す

  • FIRSTENTRYまたはNEXTENTRYで求めたエントリオブジェクトではない

  • 引数の誤り

スクリプト中断

そのほかのエラー

(凡例)

−:該当しない

NEXTENTRY

検索結果オブジェクトから2番目以降に検索されたエントリオブジェクト取得します。FIRSTENTRYを呼び出さないで、この関数を呼び出すことはできません。取得したオブジェクトを解放するためには、FREEENTRYを呼び出す必要があります。

形式
$LDAPACS('NEXTENTRY',LDAPENT,LDAPRST)
引数

引数

指定型

説明

LDAPENT

エントリオブジェクト

エントリオブジェクトを設定する変数名を指定します。

LDAPRST

検索結果オブジェクト

検索結果オブジェクトを指定します。

終了状態

処理の終了状態とその内容を次に示します。

終了状態

内容

NORMAL

正常終了

NODATA

ERROR

次のどちらかを示す

  • SEARCHで求めた検索結果オブジェクトではない

  • 引数の誤り

スクリプト中断

そのほかのエラー

(凡例)

−:該当しない

SEARCH

LDAPサーバに対して、同期検索を行います。

検索結果オブジェクトを解放するためには、FREERESULTを呼ぶか、その上位のオブジェクトを解放する必要があります。

形式
$LDAPACS('SEARCH',LDAPRST,LDAPOBJ,BASE,FILTER,SCOPE)
引数

引数

指定型

説明

LDAPRST

検索結果オブジェクト

検索結果オブジェクトを設定する変数名を指定します。

LDAPOBJ

ディレクトリ情報オブジェクト

CONNECTで取得したディレクトリ情報オブジェクトを指定します。

BASE

変数、定数

検索を開始するベースオブジェクトを指定します。

FILTER

変数、定数

検索フィルタを指定します。

SCOPE

変数、定数

ベースオブジェクトを基点として検索するディレクトリ情報の階層を次の中から指定します。

  • LDAP_SCOPE_SUBTREE(ベース下のすべてのオブジェクトに対して検索)

  • LDAP_SCOPE_ONELEVEL(ベース直下のオブジェクトに対して検索)

  • LDAP_SCOPE_BASE(ベースそのものを検索)

終了状態

処理の終了状態とその内容を次に示します。

終了状態

内容

NORMAL

正常終了

NODATA

該当するデータがない

ERROR

引数の誤り

スクリプト中断

そのほかのエラー

SELECTVALUE

エントリオブジェクトから、属性名称を指定して、1つ目の属性値(文字列)を取得します。

取得した文字列は、解放できません。FREEENTRYによってその上位のエントリオブジェクトを解放する必要があります。

形式
$LDAPACS('SELECTVALUE',LDAPSEL,LDAPENT,KEYNAME)
引数

引数

指定型

説明

LDAPSEL

属性値

属性値(文字列)を設定する変数名を指定します。

LDAPENT

エントリオブジェクト

エントリオブジェクトを指定します。

KEYNAME

変数、定数

取得したい属性の属性名称を指定します。

終了状態

処理の終了状態とその内容を次に示します。

終了状態

内容

NORMAL

正常終了

NODATA

指定した属性の値がない

ERROR

次のどちらかを示す

  • FIRSTENTRYまたはNEXTENTRYで求めたエントリオブジェクトではない

  • 引数の誤り

スクリプト中断

そのほかのエラー

記述例

ディレクトリの「ou=people,o=xxxxxx.co.jp」に登録されているユーザで、属性「title;lang-ja」が「主任」のユーザの、DNと名称を出力する場合の記述例を次に示します。

[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
実行結果

DN [uid=user1, ou=people, o=xxxxxxx.co.jp] is Taro Asset

DN [uid=user3, ou=people, o=xxxxxxx.co.jp] is Hanako Asset