Sha256: 32017246afc0cfcfdf4db5857ac87e113258d14e041d0476ad63f7680a44114b
Contents?: true
Size: 1.85 KB
Versions: 2
Compression:
Stored size: 1.85 KB
Contents
#!/bin/env ruby require 'rubygems' require 'cef' require 'getoptlong' sender=CEF::Sender.new e=CEF::Event.new @verbose=0 @file=nil opts=GetoptLong.new( ["--verbose", GetoptLong::OPTIONAL_ARGUMENT], ["--help", GetoptLong::OPTIONAL_ARGUMENT], ["--schema", GetoptLong::OPTIONAL_ARGUMENT], ["--receiver", GetoptLong::OPTIONAL_ARGUMENT], ["--receiverPort", GetoptLong::OPTIONAL_ARGUMENT], ["--append-file", GetoptLong::OPTIONAL_ARGUMENT], *e.attrs.keys.collect {|o| ["--#{o}", GetoptLong::OPTIONAL_ARGUMENT]} ) def print_usage puts <<END_USAGE Usage: cef_sender --sourceAddress="192.168.1.1" [--eventAttribute="something"] non-schema arguments: --help gets you here --schema will dump all of the callable event attribute names --receiver= syslog receiver hostname/ip --receiverPort= syslog port cef_sender will send CEF-formatted syslog messages to a receiver of your choice. only the cef fields defined in the cef reader flex connector are supported. datatyping is not enforced here. END_USAGE end def print_schema(e) e.attrs.keys.collect {|k| k.to_s}.sort.each {|a| puts a} end opts.each do |opt,arg| # TODO: set up cases for startTime, receiptTime, endTime to parse # text and convert to unix time * 1000 case opt when "--verbose" @verbose+=1 when "--schema" print_schema(e) exit(0) when "--receiverPort" sender.receiverPort=arg when "--receiver" sender.receiver=arg when "--help" print_usage exit(0) when "--append-file" @file=File.open(arg,"w+") else fieldname = opt.gsub(/-/,'') value=arg e.send("#{fieldname}=",value) end end msg=sender.format_event(e) if @verbose>0 puts msg end if !(@file.nil?) && File.exists?(@file) @file.write "%s\n" % msg.gsub(/^<\d+>/,'') else sender.emit(e) end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
cef-0.6.1 | bin/cef_sender |
cef-0.6.0 | bin/cef_sender |