NOTO

htpasswdの作成スクリプト

 Date:2015-07-08 12:16:13 +0900
 Categories: TECHNOLOGY

3日目です

はじめに

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

環境

早速書いた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)
Tweet