同步时间服务器

    由于公司内网限制了访问外网的权限,我管理的很多服务器的时间都不统一,使用Windows自带的时间同步根本无法访问到ntp服务器,更别说linux服务器了。有好几台虚拟机有时候重启了时间就不对,导致很多问题。有想过搭建一台ntp服务器,但是过程曲折,并且有时候也不可控。因此自己写了一个时间同步的脚本,服务器是Ubutu能通外网,这台服务器会定时使用ntpdate time.nist.gov命令同步北京时间。另外写了两个脚本,分别是Windows下的bat脚本和linux下的shell脚本,均依靠curl命令完成。linux下使用cron定时执行该脚本即可,Windows下可以新建任务计划来定时执行该脚本看,从而达到同步时间的效果。


1、下面是服务器代码,该服务器的时间可以用ntp去同步,要能访问外网,我写的是ruby脚本,也可以用其他脚本实现的。

require 'socket'
server = TCPServer.new('10.17.52.10', 1369)
loop do
  Thread.start(server.accept) do |client|
    while client.gets.chop.length > 0 ;end
    client.puts(Time.now.strftime('%Y-%m-%d %H:%M:%S'))
    client.close
  end
end

2、下面是Windows下的bat脚本

@echo off
for /f "tokens=1,2 delims= " %%i in ('curl -s 10.17.52.10:1369') do (
  date %%i
  time %%j
  echo change date:%%i %%j
)

3、下面是linux下的shell脚本

#!/bin/bash
#date_str=`curl -s http://www.hko.gov.hk/cgi-bin/gts/time5a.pr?a=1`
#date -s @${date_str:2:-3}
date -s "`curl -s 10.17.52.10:1369`"

captcha