由于公司内网限制了访问外网的权限,我管理的很多服务器的时间都不统一,使用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`"