42 lines
		
	
	
		
			781 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			781 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # vim: ft=ruby
 | |
| 
 | |
| class ModNetwork < ModBasic
 | |
| 	@@mod_name = 'network'
 | |
| 
 | |
| 	def data_loop()
 | |
| 		$panel_data[@@mod_name.to_sym] = "checking..."
 | |
| 
 | |
| 		while true do
 | |
| 			$panel_data[@@mod_name.to_sym] = network_status.chomp
 | |
| 			$queue << 1
 | |
| 			sleep(10)
 | |
| 		end
 | |
| 	end
 | |
| 
 | |
| 	def network_status
 | |
| 		hosts = $config['mod']['network']['hosts']
 | |
| 
 | |
| 		net_ok = 0
 | |
| 		hosts.each do |h|
 | |
| 			if system("ping -c 1 #{h} > /dev/null")
 | |
| 				net_ok += 1
 | |
| 			end
 | |
| 		end
 | |
| 
 | |
| 		if net_ok == 0
 | |
| 			status = "CRIT"
 | |
| 			fg_colour = $config['mod']['network']['crit_colour']
 | |
| 		elsif net_ok < hosts.length
 | |
| 			status = "WARN"
 | |
| 			fg_colour = $config['mod']['network']['warn_colour']
 | |
| 		else
 | |
| 			status = "ok"
 | |
| 			fg_colour = $config['mod']['network']['ok_colour']
 | |
| 		end
 | |
| 
 | |
| 		return "%{F#{fg_colour}}#{status}%{F-}"
 | |
| 	end
 | |
| end
 | |
| 
 | |
| ModNetwork.new.mainloop()
 |