| 
									
										
										
										
											2016-09-27 11:13:42 +03:00
										 |  |  | # vim: ft=ruby | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-28 23:30:07 +03:00
										 |  |  | class Network < Worker | 
					
						
							| 
									
										
										
										
											2016-09-27 16:06:04 +03:00
										 |  |  | 	require 'open3' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-28 23:30:07 +03:00
										 |  |  | 	def mainloop() | 
					
						
							|  |  |  | 		self.write "checking..." | 
					
						
							| 
									
										
										
										
											2016-09-27 11:13:42 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		while true do | 
					
						
							| 
									
										
										
										
											2016-09-28 23:30:07 +03:00
										 |  |  | 			self.write network_status | 
					
						
							| 
									
										
										
										
											2016-09-27 11:13:42 +03:00
										 |  |  | 			sleep(10) | 
					
						
							|  |  |  | 		end | 
					
						
							|  |  |  | 	end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	def network_status | 
					
						
							| 
									
										
										
										
											2016-10-04 15:34:25 +03:00
										 |  |  | 		hosts = @my_config['hosts'] | 
					
						
							| 
									
										
										
										
											2016-09-27 11:13:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-30 15:08:45 +03:00
										 |  |  | 		Open3.popen2("fping", "-u", *hosts) do |i,o,t| | 
					
						
							|  |  |  | 			hosts_down = o.each_line.count | 
					
						
							|  |  |  | 			hosts_up = hosts.count - hosts_down | 
					
						
							| 
									
										
										
										
											2016-10-21 17:56:25 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-30 15:08:45 +03:00
										 |  |  | 			if hosts_down == 0 | 
					
						
							| 
									
										
										
										
											2019-05-15 16:04:27 +03:00
										 |  |  | 				fg_colour = "ok_colour" | 
					
						
							| 
									
										
										
										
											2017-05-30 15:08:45 +03:00
										 |  |  | 			elsif hosts_down == hosts.count | 
					
						
							| 
									
										
										
										
											2019-05-15 16:04:27 +03:00
										 |  |  | 				fg_colour = "crit_colour" | 
					
						
							| 
									
										
										
										
											2016-10-21 17:56:25 +03:00
										 |  |  | 			else | 
					
						
							| 
									
										
										
										
											2019-05-15 16:04:27 +03:00
										 |  |  | 				fg_colour = "warn_colour" | 
					
						
							| 
									
										
										
										
											2016-10-21 17:56:25 +03:00
										 |  |  | 			end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-15 16:04:27 +03:00
										 |  |  | 			@rstr = "%%{FC{%s}}%s/%s%%{F-}" % [ fg_colour, hosts_up, hosts.count ] | 
					
						
							| 
									
										
										
										
											2016-10-23 02:07:59 +03:00
										 |  |  | 		end | 
					
						
							| 
									
										
										
										
											2016-10-21 17:56:25 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		return @rstr | 
					
						
							| 
									
										
										
										
											2016-09-27 11:13:42 +03:00
										 |  |  | 	end | 
					
						
							|  |  |  | end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-28 23:30:07 +03:00
										 |  |  | Modules.add("network", "Network") |