Initial commit of mrsh_reporter.rb
This commit is contained in:
		
							
								
								
									
										84
									
								
								mrsh/lib/mrsh_reporter.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								mrsh/lib/mrsh_reporter.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,84 @@ | ||||
| class Reporter | ||||
|   def initialize(settings) | ||||
|     @config       = settings | ||||
|     commentwidth  = 60 | ||||
|      | ||||
|     @formats  = Hash.new | ||||
|     @formats[:ping]     = "%15s ]-%s%4%s---------------------------------------------------[ %-4s / %-5s ]-\n" | ||||
|     @formats[:header]   = "%15s ]-BEGIN-------------------------------------------------[ %-4s / %-5s ]-\n" | ||||
|     @formats[:content]  = "%15s ]- %s\n" | ||||
|     @formats[:footer]   = "%15s ]-END----------------------------------------------------[%3d]-[ %s%6.2f%s ]-\n" | ||||
|      | ||||
|     @colors = { | ||||
|       :online     =>  '', | ||||
|       :offline    =>  ''. | ||||
|       :nodns      =>  '', | ||||
|       :loop       =>  '', | ||||
|       :reset      =>  ''. | ||||
|       :comment1   =>  '', | ||||
|       :comment2   =>  '' | ||||
|     } | ||||
|     if (@config.ansi) | ||||
|       @colors = { | ||||
|         :online     =>  '\e[0;32m', | ||||
|         :offline    =>  '\e[0;31m'. | ||||
|         :nodns      =>  '\e[7;31;48m', | ||||
|         :loop       =>  '\e[0;35m', | ||||
|         :reset      =>  '\e[0m'. | ||||
|         :comment1   =>  '\e[0;37m', | ||||
|         :comment2   =>  '\e[0;36m' | ||||
|       } | ||||
|     end | ||||
|   end | ||||
|   def loop | ||||
|     puts | ||||
|     printf @formats[:ping], "LOOP", @colors[:loop], 'LOOP', @colors[:reset], "UP", "DOWN" | ||||
|     puts | ||||
|   end | ||||
|   def report(host) | ||||
|     if (@config.command.nil? or host.status != :online or not host.rpc?) | ||||
|       report_ping(host) | ||||
|     elsif (@config.output_path) | ||||
|       report_file(host) | ||||
|     else | ||||
|       report_plain(host) | ||||
|     end | ||||
|   end | ||||
|   def report_ping(host) | ||||
|     printf @formats[:ping], host.hostname, @colors[host.status], host_status(host), @colors[:reset], host.room, host.grid | ||||
|     if (host.ping_output) | ||||
|       host.ping_output.each do |line| | ||||
|         printf @formats[:content], host.hostname, line | ||||
|       end | ||||
|     end | ||||
|   end | ||||
|   def report_file(host) | ||||
|     printf @formats[:header], host.hostname, host.room, host.grid | ||||
|     File.open(File.join(@config.output_path, "#{host.hostname}.#{Time.now.strftime('%Y%m%d%H%M%S')}"),"w") do |file| | ||||
|       host.output.each do |time,line| | ||||
|         file.puts line | ||||
|       end | ||||
|     end | ||||
|     printf @formats[:footer], host.hostname, host.returncode, @colors[:comment1], host.duration, @colors[:reset] | ||||
|   end | ||||
|   def report_plain(host) | ||||
|     printf @formats[:header], host.hostname, host.room, host.grid | ||||
|     host.output.each do |time,line| | ||||
|       file.puts line | ||||
|     end | ||||
|     printf @formats[:footer], host.hostname, host.returncode, @colors[:comment1], host.duration, @colors[:reset] | ||||
|   end | ||||
|   def host_status(host) | ||||
|     case host.status | ||||
|     when :nodns | ||||
|       "!DNS" | ||||
|     when :offline | ||||
|       "DOWN" | ||||
|     when :online | ||||
|       "  UP" | ||||
|     else | ||||
|       "UNKN" | ||||
|     end | ||||
|   end | ||||
| end | ||||
| end | ||||
		Reference in New Issue
	
	Block a user