Guest User

Untitled

a guest
Oct 18th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.77 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2.  
  3. require 'optparse'
  4.  
  5.  
  6. options = { :minsize => 8 }
  7.  
  8. OptionParser.new do |opts|
  9. opts.banner = "Usage: #{__FILE__} [options]"
  10.  
  11. opts.on("-h", "--help", "Show this message") do
  12. puts opts
  13. exit
  14. end
  15.  
  16. opts.separator("Options:")
  17. opts.on("-m", "--min-size [n]", Integer, "Minimum password size (default: #{options[:minsize]})") {|n| options[:minsize] = n }
  18. end.parse!
  19.  
  20. def pwgen(minsize = 8)
  21. elements = {
  22. :nums => ('0'..'9').to_a,
  23. :abc => ['a'..'z','A'..'Z'].map(&:to_a).flatten
  24. }
  25. collection = []
  26.  
  27. elements.each do |key,elements|
  28. min_node_size = minsize % 2 + minsize / 2
  29. (rand(min_node_size) + min_node_size).times { collection.push(elements[rand(elements.size)]) }
  30. end
  31. collection.shuffle.join
  32. end
  33.  
  34. puts pwgen(options[:minsize])
Add Comment
Please, Sign In to add comment