へっぽこネットワークエンジニアのにっき

しあわせになりたい。

スポンサーサイト

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

Net::LDAPをつかってみる その4

今回はNet::LDAP::Extension::setPasswordを使ってパスワードの変更をしてみる。
Net::LDAP::Extension::setPasswordは別途CPANからインストールする

変更後のパスワードは第3引数に指定したパスワードに設定する

changepassword.pl

#! /usr/bin/env perl

use strict;
use warnings;
use Net::LDAP;
use Net::LDAP::Extension::SetPassword;

#
#LDAP Server Configuration
#
my $ldapserver ='localhost';
my $basedn ="ou=People,dc=hoge,dc=co,dc=jp";
my $ldap = Net::LDAP->new($ldapserver) or die "$@";

my ($uid,$password,$newpassword)=@ARGV;

my $binddn= "uid=$uid,"."$basedn";

my $result = $ldap->bind("$binddn",password =>"$password");
die "Password is invalid\n" if$result->code();

my $msg = $ldap->set_password( user=>"$binddn",oldpasswd =>"$password",newpasswd=>"$newpas
sword");

die "error: ".$msg->code(). ":".$msg->error() if ($msg->code());

print "changed your password \n";

$ldap->unbind;



./changepassword.pl [uid][現在のパスワード][新しいパスワード]


ログ

slapd[2256]: conn=1 fd=12 ACCEPT from IP=127.0.0.1:37537 (IP=0.0.0.0:389)
slapd[2256]: conn=1 op=0 BIND dn="uid=[uid],ou=People,dc=hoge,dc=co,dc=jp" method=128
slapd[2256]: conn=1 op=0 BIND dn="uid=[uid],ou=People,dc=hoge,dc=co,dc=jp" mech=SIMPLE ssf=0
slapd[2256]: conn=1 op=0 RESULT tag=97 err=0 text=
slapd[2256]: conn=1 op=1 PASSMOD id="uid=[uid],ou=People,dc=hoge,dc=co,dc=jp" old new
slapd[2256]: conn=1 op=1 RESULT oid= err=0 text=
slapd[2256]: conn=1 op=2 UNBIND
slapd[2256]: conn=1 fd=12 closed



ちなみに、デフォルト設定では入力したパスワードはSSHAで暗号(ハッシュ)化されます。
スポンサーサイト

PerlでNet::LDAPを使うときに参考になる本

家にあったw。

LDAP -設定・管理・プログラミング-LDAP -設定・管理・プログラミング-
(2003/12)
Gerald Carterでびあんぐる

商品詳細を見る


タイトルにプログラミングと書いてあるだけに、結構詳しく書いてある。
Rubyも少々。

Net::LDAPをつかってみる その3

前回のコードをちょこっと修正

userbind_search.pl

#! /usr/bin/perl

use strict;
use warnings;
use Net::LDAP;

#
#LDAP Server Configuration
#
my $ldapserver ='localhost';
my $basedn ="ou=People,dc=hoge,dc=co,dc=jp";
my $ldap = Net::LDAP->new($ldapserver) or die "$@";

my ($uid,$password) = @ARGV;

my $binddn ="uid=$uid,"."$basedn";

#LDAP user search
my $result = $ldap->bind("$binddn",password =>"$password");

die "Password is invalid\n" if $result->code();

my $msg = $ldap->search(
base => "$basedn",
filter =>"(uid=$uid)",
);

$msg->code && die $msg->error;

foreach my $entry ($msg->entries) { $entry->dump; }

$ldap->unbind;

exit 0;

太字の箇所を追加。
dieすることで、パスワードが間違えた場合にanonymousで再検索させずに処理を終了することができる。

ま、そりゃそうか。

Net::LDAPをつかってみる その2

前回のつづき

uidとuserPasswordを入力し、入力したuidの情報を取得するサンプル

userbind_search.pl

#! /usr/bin/perl

use strict;
use warnings;
use Net::LDAP;

#
#LDAP Server Configuration
#
my $ldapserver ='localhost';
my $basedn ="ou=People,dc=hoge,dc=co,dc=jp";
my $ldap = Net::LDAP->new($ldapserver) or die "$@";

my ($uid,$password) = @ARGV;

my $binddn ="uid=$uid,"."$basedn";

#LDAP user search
$ldap->bind("$binddn",password =>"$password");
my $msg = $ldap->search(
base => "$basedn",
filter =>"(uid=$uid)",
);

$msg->code && die $msg->error;

foreach my $entry ($msg->all_entries) {
print $entry->get_value('uid')."\n";
print $entry->get_value('cn')."\n";
print $entry->get_value('mail')."\n";
print $entry->get_value('userPassword')."\n";
}

#スキーマ情報を全部取得するなら以下でOKみたい
#foreach my $entry ($msg->entries) { $entry->dump; }

$ldap->unbind;

exit 0;



./userbind_search.pl [uid] [userPassword]



この場合、正しいuid パスワードを入れると該当するuidの全ての値が表示され、パスワードを間違えて入力すると、出力結果は匿名認証時と同様となる。
【“Net::LDAPをつかってみる その2”の続きを読む】

Net::LDAPをつかってみる

相変わらず自分用覚書。

最近Perlで遊んでますが、レベルは初級レベルですよ。って先に言っておく。
そういうわけで、もっとスマートに書けるよ、って言うのであればご指摘おば。

参考は以下

Perl 覚書 - jordan_beth の日記

Net::LDAP
Net::LDAP (CPAN)

スキーマは便宜上以下のものとする

dc=hoge,dc=co,dc=jp
    |____ou=People
        |----uid:ユニークなID(例えば社員番号とかね)
        |----cn:氏名
        |----mail:メールアドレス
        |____userPassword:パスワード


Net::LDAPのインストールは省略

引数にuidを入力して、該当するuidの情報を取得するサンプル。

LDAPサーバの anonymous bindが有効になっていることが前提として
anonymousでldapsearchをする。

anonymous_search.pl

#! /usr/bin/perl

use strict;
use warnings;
use Net::LDAP;

#
#LDAP Server Configuration
#
my $ldapserver ='localhost';
my $basedn ="ou=People,dc=hoge,dc=co,dc=jp";
my $ldap = Net::LDAP->new($ldapserver) or die "$@";

my $uid = shift;

#LDAP user search
$ldap->bind;
my $msg = $ldap->search(
base => "$basedn",
filter =>"(uid=$uid)",
);

$msg->code && die $msg->error;

foreach my $entry ($msg->all_entries) {
print $entry->get_value('uid')."\n";
print $entry->get_value('cn')."\n";
print $entry->get_value('mail')."\n";
print $entry->get_value('userPassword')."\n";
}

#スキーマ情報を全て出す場合は以下でいいみたい
#foreach my $entry ($msg->entries) { $entry->dump; }

$ldap->unbind;

exit 0;




./anonymous_search.pl [引数にuid]



匿名認証でパスワードが見れるってドウなのよ、っていうのがありますんで
slapd.confに以下のACLを追加

access to attrs=userPassword
by anonymous auth
by self read
by dn="cn=Manager,dc=hoge,dc=co,dc=jp" read
by * none



この後実行すると、userPasswordの行は

Use of uninitialized value in concatenation (.) or string at ./anonymous_search.pl line 29, line 225.
となります。匿名では見れないので、エラーが返ってきます。
見せたくないなら、そもそもコードに書かなきゃいいじゃん、って言うのもあるんですが、
ACL前後でパスワードが見れないかの確認のため実施。
【“Net::LDAPをつかってみる”の続きを読む】

オーストラリアドルの状態を呟くTwitterBotを作った

完全に自分用ですが。

前回、Twitterで日経平均をつぶやくBotを作ってみたでWeb::Scraperで情報を拾ってきてTwitterで呟くというやり方ができたので、今度は、オーストラリアドル/日本円の状態を呟くBotを作ってみた。

AUDJPY_bot

今回必要な情報を取得するのに、FireFoxのアドオンのFireBugっていうのをはじめて使ったんですが、これは良いですねぇ。捗る。

Twitterで日経平均をつぶやくBotを作ってみた

そういうわけで、TwitterBotつくりに挑戦してみた。

日経平均株価をYahoo!ファイナンスから取得して呟く日経平均Botちゃんを作ってみました。

Yahoo!ファイナンスからの情報取得なので、20分ディレイの株価表示です。

株価と前日比、時刻を表示。

途中で既に作っていた人を見つけてしまったのでどうしようかとも思ったのですが、TwitterBotを作って見ようということが目的のため、そのまま公開。

さくらインターネットのレンタルサーバ上で動かしてます。

関連エントリ:
[Perl] Web::Scraperを使ってYahoo!ファイナンスから日経平均株価を取得してみた

Net::Twitterを使ってとりあえず呟かせてみるテスト

Net::Twitterを使ってとりあえず呟かせてみるテスト

引き続きPerlネタ(いまさら)

いまさら感はありますが、自分は初めてやるので無問題!!

参考はこちら
実用! PerlでコマンドラインからTwitter投稿(OAuth対応)-perl-mongers.org-

APIの登録の仕方から簡単なコードの書き方まで丁寧に書いてあります。感謝!!

・・・で、つぶやいてみるテストは以下


#!/usr/bin/perl

use strict;
use warnings;
use utf8;
use Net::Twitter;

my $twit = Net::Twitter->new(
traits => [qw/API::REST OAuth WrapError/],
consumer_key => 'コンシューマーキー',
consumer_secret => 'コンシューマーシークレット',
ssl => 1,
);
$twit->access_token ('アクセストークン');
$twit->access_token_secret('アクセストークンシークレット');

$twit->update('てすと');
exit;

twitest.jpg

[Perl] Web::Scraperを使ってYahoo!ファイナンスから日経平均株価を取得してみた

タイトルのとおり。以上。

とりあえず、すぐ忘れるから備忘録として。

Scrapingとかどうやってやるのか、よくわかんなくて、Web::Scraperに辿り着いて使ってみるまで、ものすごく時間かかりましたが、書いてみるとものすごく短いコード。ステキ


#!/usr/bin/perl

use strict;
use warnings;
use Web::Scraper;
use URI;

my $scraper = scraper {
process '//table[@border="1"]/tr[2]/td[3]','name' => 'TEXT';
process '//table[@border="1"]/tr[2]/td[5]','price' => 'TEXT';
process '//table[@border="1"]/tr[2]/td[6]','percent' => 'TEXT';
};

my $res = $scraper->scrape(URI->new("http://quote.yahoo.co.jp/q?s=998407.o"));

print $res->{name}."\n";
print $res->{price}."\n";
print $res->{percent}."\n";



結果

日経平均株価??
9,239.17
+140.78



あら?後ろの??はなんだ?
・・まぁ、これは後で対応。

参考サイト(参考というか、ずばりまんま・・・・感謝!!)
scraper CLI で遊ぶ その2 -へたっぴ日記-


FC2Ad

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