| 
									
										
										
										
											2011-09-30 00:19:48 +00:00
										 |  |  | #!/usr/bin/env php
 | 
					
						
							|  |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  | // A small script to grab the NTP Client statistics from a NTPD server
 | 
					
						
							|  |  |  | // Needed commands: php, ntpd, ntpq
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // Install:
 | 
					
						
							|  |  |  | // Add the following to your snmpd.conf file:
 | 
					
						
							|  |  |  | // extend ntpclient /opt/librenms/scripts/ntp-client.php
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // Version 1.1 By:
 | 
					
						
							|  |  |  | // All In One - Dennis de Houx <info@all-in-one.be>
 | 
					
						
							|  |  |  | //
 | 
					
						
							| 
									
										
										
										
											2012-05-25 11:29:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  | // START SETTINGS ///
 | 
					
						
							|  |  |  | $ntpq = '/usr/sbin/ntpq'; | 
					
						
							|  |  |  | // Change this to true if you have clk_jitter, sys_jitter in the ntpq -c rv output
 | 
					
						
							|  |  |  | $newstats_style = false; | 
					
						
							|  |  |  | // END SETTINGS ///
 | 
					
						
							| 
									
										
										
										
											2012-05-25 11:29:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  | // DO NOT EDIT UNDER THIS LINE
 | 
					
						
							| 
									
										
										
										
											2011-09-30 00:19:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  | $cmd = shell_exec($ntpq." -c rv | grep '^offset'"); | 
					
						
							|  |  |  | if ($newstats_style) { | 
					
						
							|  |  |  |     $cmd2 = shell_exec($ntpq." -c rv | grep '^clk_wander'"); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | else { | 
					
						
							|  |  |  |     $cmd2 = shell_exec($ntpq." -c rv | grep '^stability'"); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2011-09-30 00:19:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  | $vars  = array(); | 
					
						
							|  |  |  | $vars2 = array(); | 
					
						
							|  |  |  | $vars  = explode(',', $cmd); | 
					
						
							|  |  |  | $vars2 = explode(',', $cmd2); | 
					
						
							| 
									
										
										
										
											2011-09-30 00:19:48 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  | function doSNMPv2($vars, $vars2, $newstats_style) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     $ntp = array(); | 
					
						
							|  |  |  |     foreach ($vars as $item => $value) { | 
					
						
							|  |  |  |         if (!empty($value)) { | 
					
						
							|  |  |  |             $temp = explode('=', $value); | 
					
						
							|  |  |  |             if (isset($temp[1])) { | 
					
						
							|  |  |  |                 $ntp[trim($temp[0])] = trim($temp[1]); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2011-09-30 00:19:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  |     foreach ($vars2 as $item => $value) { | 
					
						
							|  |  |  |         if (!empty($value)) { | 
					
						
							|  |  |  |             $temp = explode('=', $value); | 
					
						
							|  |  |  |             if (isset($temp[1])) { | 
					
						
							|  |  |  |                 $ntp[trim($temp[0])] = trim($temp[1]); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2011-09-30 00:19:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  |     $var          = array(); | 
					
						
							|  |  |  |     $var['offset']    = (isset($ntp['offset']) ? $ntp['offset'] : 'U'); | 
					
						
							|  |  |  |     $var['frequency'] = (isset($ntp['frequency']) ? $ntp['frequency'] : 'U'); | 
					
						
							|  |  |  |     if ($newstats_style) { | 
					
						
							|  |  |  |         $var['jitter']    = (isset($ntp['clk_jitter']) ? $ntp['clk_jitter'] : 'U'); | 
					
						
							|  |  |  |         $var['noise']     = (isset($ntp['sys_jitter']) ? $ntp['sys_jitter'] : 'U'); | 
					
						
							|  |  |  |         $var['stability'] = (isset($ntp['clk_wander']) ? $ntp['clk_wander'] : 'U'); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     else { | 
					
						
							|  |  |  |         $var['jitter']    = (isset($ntp['jitter']) ? $ntp['jitter'] : 'U'); | 
					
						
							|  |  |  |         $var['noise']     = (isset($ntp['noise']) ? $ntp['noise'] : 'U'); | 
					
						
							|  |  |  |         $var['stability'] = (isset($ntp['stability']) ? $ntp['stability'] : 'U'); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2011-09-30 00:19:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  |     foreach ($var as $item => $count) { | 
					
						
							|  |  |  |         echo $count."\n"; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | }//end doSNMPv2()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | doSNMPv2($vars, $vars2, $newstats_style); |