| #!/usr/bin/python |
| |
| # Time Drift Script |
| # Periodically checks and displays time drift |
| # by john stultz (jstultz@us.ibm.com) |
| |
| # Copyright (C) 2003-2006 IBM |
| # |
| # This program is free software; you can redistribute it and/or |
| # modify it under the terms of the GNU General Public License as |
| # published by the Free Software Foundation; either version 2 of the |
| # License, or (at your option) any later version. |
| # |
| # This program is distributed in the hope that it will be useful, but |
| # WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| # General Public License for more details. |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with this program; if not, write to the Free Software |
| # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA |
| # 02111-1307, USA. |
| |
| |
| # Usage: drift-test.py [-s] [ntp_server [sleep_time]] |
| |
| import commands |
| import sys |
| import string |
| import time |
| |
| server_default = "bvrgsa.ibm.com" |
| sleep_time_default = 60 |
| |
| server = "" |
| sleep_time = 0 |
| set_time = 0 |
| |
| #parse args |
| for arg in sys.argv[1:]: |
| if arg == "-s": |
| set_time = 1 |
| elif server == "": |
| server = arg |
| elif sleep_time == 0: |
| sleep_time = string.atoi(arg) |
| |
| if server == "": |
| server = server_default |
| if sleep_time == 0: |
| sleep_time = sleep_time_default |
| |
| #set time |
| if (set_time == 1): |
| cmd = commands.getoutput('/usr/sbin/ntpdate -ub ' + server) |
| |
| cmd = commands.getoutput('/usr/sbin/ntpdate -uq ' + server) |
| line = string.split(cmd) |
| |
| #parse original offset |
| start_offset = string.atof(line[-2]); |
| #parse original time |
| start_time = time.localtime(time.time()) |
| datestr = time.strftime("%d %b %Y %H:%M:%S", start_time) |
| |
| time.sleep(1) |
| while 1: |
| cmd = commands.getoutput('/usr/sbin/ntpdate -uq ' + server) |
| line = string.split(cmd) |
| |
| #parse offset |
| now_offset = string.atof(line[-2]); |
| |
| #parse time |
| now_time = time.localtime(time.time()) |
| datestr = time.strftime("%d %b %Y %H:%M:%S", now_time) |
| |
| # calculate drift |
| delta_time = time.mktime(now_time) - time.mktime(start_time) |
| delta_offset = now_offset - start_offset |
| drift = delta_offset / delta_time * 1000000 |
| |
| #print output |
| print time.strftime("%d %b %H:%M:%S",now_time), |
| print " offset:", now_offset , |
| print " drift:", drift ,"ppm" |
| sys.stdout.flush() |
| |
| #sleep |
| time.sleep(sleep_time) |