42 lines
		
	
	
		
			781 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			42 lines
		
	
	
		
			781 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | # 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() |