Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env ruby
- require 'optparse'
- options = { :minsize => 8 }
- OptionParser.new do |opts|
- opts.banner = "Usage: #{__FILE__} [options]"
- opts.on("-h", "--help", "Show this message") do
- puts opts
- exit
- end
- opts.separator("Options:")
- opts.on("-m", "--min-size [n]", Integer, "Minimum password size (default: #{options[:minsize]})") {|n| options[:minsize] = n }
- end.parse!
- def pwgen(minsize = 8)
- elements = {
- :nums => ('0'..'9').to_a,
- :abc => ['a'..'z','A'..'Z'].map(&:to_a).flatten
- }
- collection = []
- elements.each do |key,elements|
- min_node_size = minsize % 2 + minsize / 2
- (rand(min_node_size) + min_node_size).times { collection.push(elements[rand(elements.size)]) }
- end
- collection.shuffle.join
- end
- puts pwgen(options[:minsize])
Add Comment
Please, Sign In to add comment