post by yamamoto | 0 | 4,361 views

perl で LDAP の ldif を csv に変換してみよう〜

下記のような LDAP の ldif ファイル(似たファイルならなんでも)を dn, objectClass, uid,… のような csv ファイルに変換するプログラムです。ただ100行未満のプログラムですが、スキーマ(下記はinetOrgPersonというデフォルトのスキーマ)の情報がなくてもアカウントの一覧が作れます。いちいちテキストからExcelにコピペすると百数十件でも死ぬほど時間かかりますね。試していないが、数万件でも軽々変換してくれるだろう〜(^^)

LDAP以外のテキストは、35行目の my $patten = “^$header:(.*)”; を弄ってみてください〜。

dn: uid=S0205,ou=mailsys,dc=syokuba,dc=mycompany,dc=co,dc=jp
objectClass: inetOrgPerson
uid: S0205
sn: hanako
cn: Yamato Hanako
mail: jugyouina@dep.mycompany.co.jp
userPassword:: *************************
structuralObjectClass: inetOrgPerson
creatorsName: cn=admin,dc=syokuba,dc=mycompany,dc=co,dc=jp
createTimestamp: 20090413032409Z
entryCSN: 20090413032409.000000Z#000005#000#000000
modifiersName: cn=admin,dc=syokuba,dc=mycompany,dc=co,dc=jp
modifyTimestamp: 20090413032409Z

dn: uid=S0206,ou=mailsys,dc=syokuba,dc=mycompany,dc=co,dc=jp
objectClass: inetOrgPerson
uid: S0206
sn: tarou
mail: tarou@jimu.mycompany.co.jp
structuralObjectClass: inetOrgPerson
creatorsName: cn=admin,dc=syokuba,dc=mycompany,dc=co,dc=jp
createTimestamp: 20090413032409Z
cn: Ooshiro Kuniko
userPassword:: *************************
entryCSN: 20090417025558.000000Z#000001#000#000000
modifiersName: uid=S0206,ou=mailsys,dc=syokuba,dc=mycompany,dc=co,dc=jp
modifyTimestamp: 20090417025558Z

【サンプルプログラム】 perl ldif2csv.pl filename.ldif

変換した結果はこちら:

Comments are closed.