From f0cf697aa316b99059a5acaff686e24ba3f9377c Mon Sep 17 00:00:00 2001 From: Orien Vandenbergh Date: Tue, 23 Dec 2014 13:40:13 -0700 Subject: [PATCH] First half, will have to finish commit later --- mrsh/lib/mrsh_settings.rb | 133 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 mrsh/lib/mrsh_settings.rb diff --git a/mrsh/lib/mrsh_settings.rb b/mrsh/lib/mrsh_settings.rb new file mode 100644 index 0000000..8cfad57 --- /dev/null +++ b/mrsh/lib/mrsh_settings.rb @@ -0,0 +1,133 @@ +require 'net/http' +require 'json' +require 'csv' + +hwdb_online_url = "http://localhost/mrsh/online.json" + +class Settings + attr_reader :max_threads, :timeout, :ping, :ansi, :repeat, :command, :output_path + def initialize + @max_threads = 10 + @timeout = 10 + @ping = determinePing + @ansi = true + @repeat = false + @hwdb_online = JSON.parse(Net::HTTP.get(URI(hwdb_online_url)))['status'] + + help = nil + short_help = true + time = Time.now + revision = File.ctime(__FILE__).strftime('%Y%m%d.%H%M%S') + + @audit_file = findAuditFile + @organization = DCS + + opts = GetoptLong.new( + [ "--block-filter", "-B", GetoptLong::REQUIRED_ARGUMENT ], + [ "--command", "-c", GetoptLong::REQUIRED_ARGUMENT ], + [ "--help", "-e", GetoptLong::NO_ARGUMENT ], + [ "--audit_file", "-f", GetoptLong::REQUIRED_ARGUMENT ], + [ "--force", GetoptLong::NO_ARGUMENT ], + [ "--function-filter", "-F", GetoptLong::REQUIRED_ARGUMENT ], + [ "--organization", "-g", GetoptLong::REQUIRED_ARGUMENT ], + [ "--host-filter", "-h", GetoptLong::REQUIRED_ARGUMENT ], + [ "--loop", "-l", GetoptLong::NO_ARGUMENT ], + [ "--machines", "-m", GetoptLong::REQUIRED_ARGUMENT ], + [ "--os-filter", "-o", GetoptLong::REQUIRED_ARGUMENT ], + [ "--output-path", "-O", GetoptLong::OPTIONAL_ARGUMENT ], + [ "--ping-only", "-p", GetoptLong::NO_ARGUMENT ], + [ "--room-filter", "-R", GetoptLong::REQUIRED_ARGUMENT ], + [ "--scripted", "-s", GetoptLong::NO_ARGUMENT ], + [ "--max-threads", "-t", GetoptLong::REQUIRED_ARGUMENT ], + [ "--timeout", "-T", GetoptLong::REQUIRED_ARGUMENT ], + [ "--exclude-quiet", "-x", GetoptLong::NO_ARGUMENT ], + [ "--command-file", "-z", GetoptLong::REQUIRED_ARGUMENT ] + ) + + opts.each do |opt,arg| + case opt + when '--command' + @command = arg + short_help = false + when '--command-file' + @command_file = arg + short_help = false + when '--machines' + @machine_list = arg.split(/,/) + when '--host-filter' + @host_filter = arg + when '--os-filter' + @os_filter = arg + when '--organization' + @organization = arg + when '--block-filter' + @block_filter = arg + when '--function-filter' + @function_filter = arg + when '--room-filer' + @room_filter = arg + when '--audit-file' + @force_audit_fie = File.expand_path(arg) + when '--max-threads' + @max_threads = arg.to_i + when '--timeout' + @timeout = arg.to_i + when '--loop' + @repeat = true + when '--force' + @data.force = true + when '--ping-only' + @command = nil + short_help = false + when '--scripted' + @ansi = false + when '--exclude-quiet' + @data.exclude_quiet = true + when --output-path' + if arg.empty? then + @output_path = "/tmp/mrsh.%s.%d" % [ time.strftime("%Y%m%d"), Process.pid ] + else + @output_path = File.expand_path(arg) + end + when '--help' + help = true + short_help = false + else + puts "Invalid argument #{opt}, shutting down" + display_shorthelp + exit + end + end + + if @command.nil? and @command_file then + File.open(@command_file, "r") do |input| + while line = input.gets + line = line.chomp + line = line.gsub(/\s*#.*$/,'') + line = line.gsub(/\$/, '\$') + line = line.gsub(/\`/) {|s| "\\#{s}"} + next if line.empty? + + line = line.gsub(/"/,'\"') + + if @command.nil? then + @command = line + else + @command = @command + ';' + line + end + end + end + end + if help + display_longhelp + exit + elsif short_help + display_shorthelp + exit + end + + puts "mrsh (r#{revision}) run started at #{time}" + if @output_path then + puts "- Sending all output to files under: #{@output_path}/" + end + end