スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

perlでActive Directoryに接続しちゃうよ!

perlでActive Directoryに接続・ユーザ情報の検索を行ってみたので、そのメモです。



■Active Directoryとは
ネットワーク上のユーザ、ハードウェアとか、それを利用するユーザの権限とかを
一元に管理してるものみたい。
便利ですなぁ。
今回は、ここからユーザの情報を検索してみたよ。

■perlでActive Directoryに接続する為の準備
まず、以下2つのモジュールを入れてね。
・net::ldap
・Convert::ASN1(net:ldapを使用するのに必要っぽい)

※ppmでnet::ldapを入れる場合は、自動でconvert::asn1も入ります。

■Active Directoryへの接続
Active Directoryへの接続は、準備で入れたnet::ldapを使用します。

ldapって何?って人は ディレクトリサービスに接続するプロトコルだよ。
ってことだけ覚えておけば良いと思うよ。

んじゃ簡単に接続までのソース

use Net::LDAP;

my $ldap_host = 'xxx.xxx.xxx.xxx'; #Active DirectoryのIP指定
my $bind_dn = 'id@domain'; #idはActive Directory上のid domainはActive
Directoryの奴 例)hoge.net
my $bind_pw = 'password'; #idに対するpassword

my $ldap = Net::LDAP->new( $ldap_host ) or die "$@ $!";
$ldap->bind( $bind_dn, password => $bind_pw ) or die "$@ $!";

これで接続は完了。
接続が出来ているか確認したい場合は、最後の行を下記に変更。

my $bind = $ldap->bind( $bind_dn, password => $bind_pw ) or die "$@ $!";

if ($bind->is_error()) {
#接続エラー
} else {
#接続OK
}

■ユーザの検索
接続までいけたら、次のソースを追加してみて。
$baseの部分はちょっと怪しいので、接続できない人はldapAdminってツール使って
baseの内容生成すりゃいいとおもうよ!

my $base = 'DC=domainの頭,DC=domainのケツ'; #hoge.netだったら DC=hoge,DC=net
my $filter = '(cn=検索対象id)';

my $mesg = $ldap->search( base => $base, filter => $filter );

これで$mesgに検索対象のユーザが取れたはず。
余裕ですね!
取得した内容は$mesg->dump;で出力されるよ!

■検索結果の絞込み
$mesgに検索結果が入ったのはいいけど、情報多すぎどうにかしてくれ!

そんなときに便利なのがコレ!
$mesg->get_value('属性名');

コイツがあれば、どんなに沢山な情報があっても一発さ!
キャサリン「まあ、凄いわスティーブ!100行あったデータがたったの1行になったワ!」

■最後に
ケツに下記をつっこんで終わりさ!
$ldap->unbind;

正直、調べてもあんまり情報でてこなくて、
個々が何をしているか完全に把握できてない部分もあります。
baseの部分とかね・・・。

でも、やれる事はやった!がんばった!
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール
最近一人暮らしを始めた糞ゲーマーです。 最近ゲーム熱が冷め気味なので、なんかこう燃え上がるものが出ないか。 PS3/PC/PSVitaがメインハード。XBOX360はもう課金切れ

ならこ

Author:ならこ
いろいろゲームするよ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
カウンタ
検索フォーム
RSSリンクの表示
リンク
フリーエリア
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。