$LDAPACS(ディレクトリ情報へのアクセス関数)
ディレクトリサービスへの接続認証、検索、エントリの取得、属性の取得など、ディレクトリ情報にアクセスできます。ただし、この組み込み関数を使用してディレクトリ情報を操作するには、ディレクトリ情報へのアクセス方法と関数を習得している必要があります。
- 〈このページの構成〉
形式
$LDAPACS(関数名,引数1(,引数2(,…)))
指定する値
-
関数名
関数名を定数または変数で指定します。定数を指定する場合は、「'(シングルクォーテーション)」で囲みます。
-
引数
関数への引数を定数または変数で指定します。定数を指定する場合は、「'(シングルクォーテーション)」で囲みます。
注意事項
情報の取得に失敗した場合は、0バイトの文字列が返されます。
ディレクトリ情報へのアクセス関数で使用できる関数の詳細
組み込み関数$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