コンピュータ

py-smbpasswd

たまには技術的なことも書いてみる。pythonを用いてLDAPでアカウント管理をやっているのだがパスワードを生成するところがスマートにやれなかった。

どうしたかというと通常パスワードはslappasswdをsambaパスワードは(なんとびっくり)perlのCrypt::SmbHashモジュールを呼び出していた。

データ初期化するときは問題ないのだけどユーザにパスワードを変更させるインターフェースを作る場合、そのシステムにldap環境がインストールされていないとできない問題が生じた。
ググルとこんな投稿があったけどさくっと後が続かない。

さらにググルと貴重なソースを発見した。
上記によると単純にshaで生成する場合も以下のようにbase64でエンコードしなければならないということ。

base64.encodestring(sha.new(str(pwd)).digest())

ところでよくよくソースを読んでいるとsmbpasswdなるモジュールを利用していることに気づく。
これはとおもって調べたらpy-smbpasswdのサイトにたどり着いた。

Linux用にはどっかにspecファイルがあったのでそれを修正してビルドし(ただしDebianは野良ビルド)、Windows用にはC++ Builderでコンパイルした。
これでユーザーが通常パスワード、sambaパスワード両方変更できるようになった。
便利過ぎ。
需要ないかもしれないけどWindowsバイナリアップしとく。

タグ:  Python 
« ポイントゲットで得する 管理組合園芸作業 »