4th
Tue
n文字の半角英数文字列を生成する
昨晩は、n桁の16進数を生成しました。
今晩は、n文字のランダムな半角英数文字列を生成するRubyスクリプトを書いてみました。
ただ文字列を生成するだけだとあまり面白くないので、optparseを使ってオプションを取るようにしました。
以下、コード。
1 #/usr/bin/env ruby 2 3 require 'optparse' 4 5 def main(argv) 6 options = {} 7 8 option_par ser = OptionPars er.new {|opt| 9 opt.on('-l LENGTH', '--len LENGTH', 'Set password length'){|v| options[:l] = v} 10 opt.on('-a [OPTIONAL_C HARS]', '--add [OPTIONAL_C HARS]', 'Add optional characters '){|v| options[:a] = v} 11 opt.parse!(argv) 12 } 13 14 if options[:l] 15 puts mkpasswd(options[:l].to_i, (options[:a] || "").split(//)) 16 else 17 puts option_par ser 18 end 19 end 20 21 def mkpasswd(n, optional_c hars) 22 passwd = "" 23 24 lower_char s = ("a".."z").to_a 25 upper_char s = ("A".."Z").to_a 26 numbers = ("0".."9").to_a 27 28 passwd_cha rs = (lower_char s + upper_char s + numbers + optional_c hars).uniq 29 passwd_cha rs_size = passwd_cha rs.size 30 31 passwd = Array.new(n){ passwd_cha rs[rand(passwd_cha rs_size)] }.join 32 33 return passwd 34 end 35 36 main(ARGV)
使い方は、
1 $ ruby mkpasswd.rb 2 Usage: mkpasswd [options] 3 -l, --len LENGTH Set password length 4 -a, --add [OPTIONAL_CHARS] Add optional characters
で確認できます。
実際に使ってみます。
63文字の文字列を生成する
1 $ ruby mkpasswd.rb -l 63 2 qyXsKDICRoyweiA3MPVk C1Q2xXdY5u h00cxgWGrh j1b7HKvMwU NkpmSOG1QJ Tuk
-aオプションを使って, 記号を入れる
1 $ ruby mkpasswd.rb -l 63 -a _@! 2 My!n1WEYoc1R94JJW3X6Jtm PKCJOjseWu ubhH8R_bRo 6bYnwAoKgS Nzfyskv@RD
とまぁ、こんな感じです。
細かいところは気にせず自分用に書いたので、まだまだ改良する必要があります。
なんとなく、GitHub に置いてみました。
もしよければ使ってみてくださいm(_ _)m
posted by
y_tsuda
on Tue 4 Nov 2008
at 22:20