First half, will have to finish commit later
This commit is contained in:
parent
8bc213d9e3
commit
f0cf697aa3
133
mrsh/lib/mrsh_settings.rb
Normal file
133
mrsh/lib/mrsh_settings.rb
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user