class Papertrail::CliAddSystem
Attributes
program_name[R]
Public Instance Methods
error(message, try_help = false)
click to toggle source
# File lib/papertrail/cli_add_system.rb, line 112 def error(message, try_help = false) puts "#{program_name}: #{message}" if try_help puts "Try `#{program_name} --help' for more information." end exit(1) end
run()
click to toggle source
# File lib/papertrail/cli_add_system.rb, line 13 def run options = { :configfile => nil, :token => ENV['PAPERTRAIL_API_TOKEN'], } if configfile = find_configfile configfile_options = load_configfile(configfile) options.merge!(configfile_options) end OptionParser.new do |opts| @program_name = opts.program_name opts.banner = "Usage: #{opts.program_name} [OPTION]..." opts.separator '' opts.separator "Options:" opts.on("-c", "--configfile PATH", "Path to config (~/.papertrail.yml)") do |v| options[:configfile] = File.expand_path(v) end opts.on("-s", "--system SYSTEM", "Name of system to add") do |v| options[:system] = v end opts.on("-n", "--hostname HOSTNAME", "Hostname which can be used to filter", "events from the same IP by syslog hostname") do |v| options[:hostname] = v end opts.separator '' opts.separator 'Host Settings:' opts.on("-i", "--ip-address IP_ADDRESS", "IP address of system") do |v| options[:ip_address] = v end opts.on("--destination-port PORT", "Destination port") do |v| options[:destination_port] = v end opts.separator '' opts.separator " Note: only one of --ip-address or --destination-port must be specified" opts.separator '' opts.separator "Common options:" opts.on("-h", "--help", "Show usage") do |v| puts opts exit end opts.separator '' opts.separator 'Example:' opts.separator " $ #{opts.program_name} --system mysystemname --destination-port 39273" opts.separator " $ #{opts.program_name} --system mysystemname --ip-address 1.2.3.4" end.parse! if options[:configfile] configfile_options = load_configfile(options[:configfile]) options.merge!(configfile_options) end unless options[:system] error "The --system argument must be specified" end unless options[:ip_address] || options[:destination_port] error 'Either --ip-address or --destination-port most be provided' end Papertrail::Connection.new(options).start do |connection| # Bail if system already exists existing = connection.show_source(options[:system]) if existing && existing['name'].upcase == options[:system].upcase exit 0 end if options[:destination_port] && !options[:hostname] options[:hostname] = options[:system] end if connection.register_source(options[:system], options) exit 0 end end exit 1 rescue OptionParser::ParseError => e error(e, true) exit 1 rescue Net::HTTPServerException => e output_http_error(e) exit 1 end