Note

htpasswdの作成スクリプト

3日目です

はじめに

apache用にhtpasswdを作る機会がそこそこあって、毎回 luft様 のページにお世話になっていました。今回は自分で作成してみようと思ったので記録を残します。

環境

  • ruby 2.1.5
  • windows 7

※ htpasswdの設置等はこの記事に含まれていません。

早速書いたScript

require 'securerandom' require 'webrick' include WEBrick

module MyScript class Htpasswd def initialize(name, chara_length) @name = name @passwd = SecureRandom.urlsafe_base64[0...chara_length.to_i] end

def generate passwd = HTTPAuth::Htpasswd.new('.htpasswd') passwd.set_passwd(nil, "#{@name}", "#{@passwd}") end

def display { 'name' => @name, 'password' => @passwd, 'htpasswd' => "#{@name}:#{generate}" } end end end print "Input name: " name = STDIN.gets.chomp print "Input password length: " chara_length = STDIN.gets.chomp.to_i htpasswd = MyScript::Htpasswd.new(name, chara_length)

puts "n" htpasswd.display.each {|title, text| puts "#{title} => #{text}"}

puts "nfinished." STDIN.gets

exit 0

表示イメージ

IDと文字数を入力するとID、PW、htpasswdに記載するテキストを表示します。 htpasswdファイルを個別に追加するようだったのでそのまま出力してしまいました。

$ ruby htpasswd.rb Input name: username # STDIN.getsでID名を入力 Input password length: 16 # STDIN.getsでパスワードの文字数を入力

name => username password => mkmLbE38A3QYapaf htpasswd => username:zr5BN5NG6F5bM

finished.

備考とまとめ

HTPASSWDを操作するクラス

[WEBrick::HTTPAuth::Htpasswd](http://docs.ruby-lang.org/ja/2.2.0/class/WEBrick=3a=3aHTTPAuth=3a=3aHtpasswd.html)のクラスでそのままファイルにhtpasswdを追加したり破棄したりができます。直接サーバ内で一つのファイルを管理するなら素直にコチラだけ使うのが良さそうです。

ランダムなパスワードの作成

色々とやりかたがあるようなのですがSecureRandomを利用するのが一番お手軽そうでした。文字列にも色々種類があるようなので、合わせてどの形態のパスワードが良いか検討されるのも良さそうです。

※参考:[http://www.xmisao.com/2014/02/15/how-to-generate-a-random-string-in-ruby.html](http://www.xmisao.com/2014/02/15/how-to-generate-a-random-string-in-ruby.html)