htpasswdの作成スクリプト
Date:2015-07-08 12:16:13 +0900
Categories: TECHNOLOGY
Categories: TECHNOLOGY
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)Tweet