Note

net-ldapを試してみた

業務でldapを扱うことがあったのですが、全くわからなかったので悪あがきでRubyで抽出とかしてみた。

gemのインストール 今回はnet/ldapというものを使いました。

sudo gem install net-ldap

抽出のために書いたコード ちなみにもろこちらの方を参考にしています。

http://d.hatena.ne.jp/zizgig/20110620/1308586789 http://d.hatena.ne.jp/dayflower/20100302/1267509137 ありがとうございます。

# coding: utf-8

require 'net/ldap'

SERVER = 'sample.com' PORT = '389' BASE_DN = 'o=適当に.,c=適当に' ROOT_DN = "cn=admin,#{BASE_DN}" PASSWARD = 'パスワード'

ldap = Net::LDAP.new :host => SERVER, :port => PORT, :base => BASE_DN, :auth => { :username => ROOT_DN, :password => PASSWORD, :method => :simple, }

raise 'bind failed' unless ldap.bind

domainname = [] value = []

ldap.open do |conn| filter1 = Net::LDAP::Filter.eq("uid", "admin@*") conn.search(:filter => filter1) do |entry| entry.each do[http://www.stbarnabashealthsystem.com/100mg/](http://www.stbarnabashealthsystem.com/100mg/)|attr_name, values| case attr_name when :domainname domainname << values when :value value << values end end end end

puts domainname puts ftpuid

exit 0

こんなかんじでldapの認証情報を定義してnewの時に変数に一緒に詰め込んであげる。そして ldap.bindとかで接続して、ldap.openで実際に中身をごそっと拾ってくる。 Net::LDAP::Filter.eq(”,”)でフィルターに使う道具を用意してsearchの時にそのフィルターを元に探す。 あとは通常のruby的にテキスト処理をしてあげてほしいものを抽出する。 ッて感じであってるかわからないんですが、そんな感じかなと思います。 ldapを直接触ったことがないので参考までに。