ActiveDirectoryのLDAP認証もどき

python-ldapを使ってみた。

ついでに、以前から試そうと思って手をつけていなかった、ActiveDirectoryのLDAP認証も。試しに、bindしてみるだけ。平文でパスワードが流れるのでこのままではちょっと使えない。

#!/usr/bin/env python
# -*- coding: utf-8-*-
# python-ldapを使ってActiveDirectoryで認証してみる
# http://python-ldap.sourceforge.net/

def ADAuth(username,password,host,port=389):
    """ActiveDirectoryのドメイコントローラにユーザ名とパスワードでbindしてみる。
    bindできれば認証OK。認証NGなら例外が起きる。
    """
    import ldap
    url = "ldap://%s:%d" % (host,port)
    l = ldap.initialize(url)
    l.simple_bind_s(username,password)
    l.unbind_s()

if __name__=='__main__':
    if len(sys.argv)<3:
        print "Usage: %s username password" % (sys.argv[0])
    else:
        try:
            userid = sys.argv[1]
            password = sys.argv[2]
            ADAuth(userid,password,"adserver.example.com")
            print "OK"
        except:
            print "NG"

Gist:227565

割り算

/で整数の割り算をすると切り捨てられるのが、なんか違和感あるって話になって調べてみると、そうだったのかあ。

調べてみるもんだ。

>>> 10/3
3
>>> from __future__ import division
>>> 10/3
3.3333333333333335
>>>

Pythonで3桁区切りのカンマ挿入


str.format()でいけるようになりました。locale使うよりこっちがお手軽でよい場合が多いでしょう。
http://docs.python.jp/2/whatsnew/2.7.html#pep-378-format-specifier-for-thousands-separator

PHPでいうところのnumber_formatのように、3桁毎に位取りのカンマを入れる方法はどうするの?ってことで。

いろいろ探してみたところ、これがよさそう。

>>> import locale
>>> locale.setlocale(locale.LC_NUMERIC, 'ja_JP')
'ja_JP'
>>> locale.format('%d', 10000, True)
'10,000'
>>> locale.format('%.2f', 10000.00, True)
'10,000.00'
>>> locale.format('%.2f', 9999.999, True)
'10,000.00'
>>>

iSCSI

Dell|EMCのだと欲しいスペックのモノは300万ぐらいになっちゃう。テストプロジェクトに導入するのは難しいなあ、ということで。

結局、

Linux-iSCSI http://linux-iscsi.sourceforge.net/

iSCSI Enterprise Target http://iscsitarget.sourceforge.net/

の組み合わせを評価してみることに。

考えているのとほとんどおんなじ構成を試した記事。

http://as-is.net/blog/archives/001189.html

こういうのもある。こっちのほうが楽ちんか。

http://www.openfiler.com/

WindowsでOracle9i client版のSQL*Plusにはまる

sqlplusを実行するバッチファイルをいじっていたら、アプリケーションエラーが出てきて、Microsoftに連絡するかどうかを100回ぐらい聞かれた。

コマンドプロンプトで再現できるようになったのは、2時間後。

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:>echo %SQLPLUS%
%SQLPLUS%
C:\>set SQLPLUS=hoge
C:>echo %SQLPLUS%
hoge
C:\>sqlplus.exe
(ここでアプリケーションエラーが出る)

SQLPLUSという名前の環境変数が定義されているとダメみたい。

バッチのはじめのほうにあったUNIX版からの名残の環境変数を消してみると動いた。

なんだそれ。