人気ブログランキング | 話題のタグを見る

ldapquery.exe: LDAP→CSVファイル コマンドラインプログラム

ずいぶん前に書いたモノだが、これもVectorへ出そうかどうか迷ってるのでいちおう様子見の為にベータの部屋においておく。

 代替策がいくらもあるので、これこそ無用の長物って感じがしなくもないが…個人的には便利に使ってるんだが(自画自賛^^;)

ldapquery.exe Ver0.1β 2006/03/24




***********************************************************************

 これは、ベータ版のドキュメントです。
 ベータ版の為、本ドキュメント記載の内容・プログラムの仕様は変更される
 可能性があります。

***********************************************************************
===========================================================================
ldapquery.exe

LDAP検索用コマンドラインプログラム
copyright(c) SIGNAL9, 2006
All Rights Reserved.
Ver 0.1 (Beta)
===========================================================================
■これは何?
iniファイルで指定された内容でldap照会行う、コマンドライン用プログラム
です。

■何ができるの?

一般的なLDAPサーバ(SunOne, OpenLDAP)や、LDAP通信が可能なActiveDirectory
などのディレクトリから、iniファイルで指定したLDAPフィルタ形式でデータを
取得し、
(1) LDIF風(ただしBASE64デコード)
(2) TAB区切り
(3) カンマ区切り
(4) Excel2.1下位互換(擬似BIFF5)
形式で出力します。
バッチファイルから呼び出して使うことを想定しています。

要するに簡易的なldapsearch(LDAP SDK所載)です。
ldapsearchやADSIほど細かい制御や、バイナリ項目を扱うことはできません
が LDAP SDK 用のDLLは不要です。ADSIも使っておりません。

■動作環境
本ソフトは以下の環境で開発・動作確認を行いました。
*Microsoft (R) 日本語WindowsXP Pro (SP2)

この為、動作環境もこれに準じます。

■使い方

以下のようなINIファイルを用意します。
----------------------------------------------------------
[Host]
; LDAP バージョン
LdapVersion=3
; ホストの名前(もしくはIPアドレス) これは環境によって直すこと
Host=foo.ldap.server
; LDAP通信ポート
Port=389
; Socketのタイムアウト(ミリ秒=1000分の1秒)
SockesTimeOut=60000
; TLSを使う場合は1.それ以外は使わない
UseTLS=0

[Search]
; 検索して返ってくるレコードの上限数。0なら無制限
SearchSizeLimit=0
; 検索のクライアント側タイムアウト(ミリ秒)
SearchTimeLimit=0
; ベースDN
BaseDN="ou=people,o=bar"
; 検索文字列。LDAP検索フィルタの形式で。
SearchString="(|(mailhost=foo.ldap.server)(OrganizationCode=100*))"
; 検索スコープ。1:シングルレベル、2:サブツリー含む、3:ベースオブジェクト
SearchScope=0
; CSV/TAB 形式の時に、同じ属性名のエントリを纏める場合の区切り文字
ColumnSeparater=","
;検索結果のアトリビュートリスト(1バイトスペースで区切る)
;全アトリビュートなら * (省略時は*)
Attributes=cn;lang-jp mail divisioncode
;アトリビュート指定ファイルの形でも与えられる(こっちが優先)
;AttributeFile=C:\ldapquery\Attrib.TXT

[User]
; BINDユーザ名。Active Diretoryの場合はドメイン名\アカウント
;UserName="cn=foobar,ou=people,o=mycompany"
; 認証用パスワード
;Password=password

[Output]
; UTF8のまま出力するなら0を指定する。それ以外ならANSIにコード変換する。
; このプログラムはスキーマまで見ていないので、バイナリ項目がある場合には
; ANSIに変換するとダメ
UTF8Out=1
; 出力する形式。1:LDIF風 2:TAB区切り 3:カンマ区切り 4:Excel2.1下位互換(擬似BIFF5)
OutputType=4
; 出力するファイルのプレフィックス。省略時は "ldapquery"。
; OutputTypeによって、".ldif",".tab",".csv",".xls"を付与
;OutputFilePrefix=TEST
; ヘッダ出力抑止(LDIFは除く)。 0=抑止しない(デフォルト),1=抑止
OutputHeaderSuppress=0
----------------------------------------------------------

このINIファイルを引数に指定し、ldapqueryを動作させます。

C:\>ldapquery ldapquery.ini

引数を省略すると、EXEと同じディレクトリにあるldapquery.iniを読み込みます。

■著作権・使用・配布上の条件
本ドキュメントとそれに付随する一切のドキュメント及び実行プログラム
(以下本ソフトウェアと略す)の著作権は、作者である SIGNAL9(以下作
者と略す)が保有します。

本ソフトウェアの使用により発生した、いかなる損害に対しても作者は責
任を負いません。

本ソフトウェアの改良・サポートの義務を作者は負いません。

配布・転載に関しては以下を遵守いただく限り自由にしていただいてかま
いません。
*本ソフトウェアの初期配布形態を保持すること。内容の改変・削除・編
集を行わないこと。

本ソフトウェアは、以下の場合に該当しない限り無償で利用して頂いて
かまいません。

*作者が特に許可した場合を除く直接的な営利目的での使用
つまり、「製品に付属させる」とか「不特定多数を相手にする商用のサ
ーバーで使う」などが相当します(いわゆる「社内利用」の類はこれに
相当しません。ご自由にどうぞ)。

上の一文「作者が特に許可した場合を除く直接的な営利目的での使用」
の禁止は、サポートの責任が負えないための逃げ道です(笑)

拙作のフリーソフトはいくつか商用利用のお申し込みを頂きましたが、
メールでご連絡頂き、無保証であることの確認をさせていただければ基
本的にすべて「作者が特に許可」しています。

*公序良俗・関連諸法規に反する使用

*本ドキュメント記述の内容に同意できない場合

上記に該当する場合は、使用をお断りいたします。


■履歴

2005/02/15 Ver1.0

by SIGNAL-9 | 2006-03-24 14:18 | 拙作ソフトウェア
<< NTTデータ元社員、カード偽造の疑い battp.exe : バッチ... >>