如果使用linux 下,busybox自带的rdate命令 去ipv6 的ntp server 同步时间的话,会提示invalid argument ;无效参数。

那么现在下载rdate的源码并对其进行修改。源码地址 http://download.csdn.net/detail/wanhl1990/6823025

修改内容如下,下载源码后解压,进入解压后的文件,修改src/ntp.c 的sync_ntp() 函数的内容。

       struct ntp_data data;
struct sockaddr_in6 *peer1 ; // define peer1 +++; deadline = current_time(JAN_1970) + delay;
*offset = 0.0;
*error = NTP_INSANITY; //change peer to _in6 , ;
peer1 = (struct sockaddr_in6 *)peer ;//++++++ if (connect(fd, peer1, SA_LEN(peer1)) < ) { //modify
IPv6的结构体sockaddr_in6比sockaddr_in的结构要大,可以存储来自IPv4的连接的ip等信息 。所以按照这个方式来进行修改。

修改完成后,对整个rdate文件进行编译,得到rdate可执行命令后,就可以安装帮助信息中的操作方法进行信息同步了。例如:rdate -n 65.55.56.206. 或者rdate -n 2001:288:5400::2.

执行完成后,会得到当前时间与服务器同步来的时间之间的差值adjustment。使用shell脚本将该差值adjustment获取后,进行时间调整。
out=`exec /sur/bin/rdate -n :::: -v -p`
res=$? adjustment=`echo $out | grep adjust | sed -e 's/^.*local clock by //g' | sed -e 's/.[0-9]* seconds.*$//g' | sed -e 's/-0/0/'`

或者这个adjustment后,使用时间戳进行时间设置即达到时间同步的作用了。

给个例子:

static int sntp_restart_adjustment(int adjustment)
{
struct timeval tv_old = {}, tv_new = {}; /* Get current system's time. */
if (gettimeofday(&tv_old, NULL) < )
{
printf ("gettimeofday() failed\n");
return ;
} /* Add the adjustment (measured in seconds) to the current system's time. */
tv_new.tv_sec = tv_old.tv_sec + adjustment; /* Change system's time with the newly adjusted time. */
if (settimeofday(&tv_new, NULL) < )
{
printf ("settimeofday() failed\n");
return ;
} system("/usr/sbin/rtc %s", "up2chip"); return ;
}

哦了!这就是在做ipv6支持sntp所做的工作。仅供参考,欢迎留言

linux 下使rdate命令支持ipv6 ntp server 同步时间的更多相关文章

  1. Linux下使Shell 命令脱离终端在后台运行

    --Linux下使Shell 命令脱离终端在后台运行------------------------------------2014/02/14你是否遇到过这样的情况:从终端软件登录远程的Linux主 ...

  2. VMware ESXi 5.5无法与Windows 2012 NTP Server同步时间

    这次笔者需要面对的环境对时间的同步有比较高的要求, 而虚拟化的环境中时间是比较容易出问题的, 您可以参考上一篇博文为什么Domain controller上的time synchronization非 ...

  3. (转)Linux下使Shell 命令脱离终端在后台运行

    转自: http://www.linuxidc.com/Linux/2011-05/35723.htm 方法如下: (1)输入命令: nohup 你的shell命令 & (2)回车,使终端回到 ...

  4. windows下使用dos命令手工与ntp服务器同步系统时间

    管理员模式的命令窗口 net stop w32time &w32tm /unregister &w32tm /register &net start w32time & ...

  5. Linux下使命令不受终端断开的影响,保持在后台运行的几种方法及原理

    摘自https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/ 记录一下Linux下使命令不受终端断开的影响,保持在后台运行的几个方法及其原理.当用 ...

  6. linux下安装7z命令及7z命令的使用

    本文主要介绍了在linux下安装7z命令的方法,同时介绍了7z命令的使用.7z压缩格式拥有众多优点,具有极高的压缩比率,如果你还不了解,请看文章:7z格式.LZMA压缩算法和7-Zip详细介绍. re ...

  7. Linux下使用mail命令发送邮件

    因为需要经常备份网站的数据,所以了解并学习了下linux下如何通过shell来发送邮件,这里以CentOS为例,使用mail命令来进行外部邮件的发送.mail命令的语法如下: Usage: mail ...

  8. [转帖]linux下安装7z命令及7z命令的使用

    linux下安装7z命令及7z命令的使用 https://www.cnblogs.com/yiwd/p/3649094.html yum install p7zip 执行命令为 7za x 或者是 7 ...

  9. Linux下登录Oracle命令行时删除键^H解决方法

    Linux下登录Oracle命令行时删除键^H解决方法 在linux服务器下登录oracle的控制台,如果输入错误,想用删除键删除时却不能删除,输出的是^H的字符. 方法 用如下的命令可以使删除键生效 ...

随机推荐

  1. [禅悟人生]"执著"是自缚的茧

    宋代苏东坡和佛印禅师是好朋友,他们习惯拿对方开玩笑.有一天,苏东坡到金山寺和佛印禅师打坐参禅,苏东坡觉得身心通畅,于是问禅师道:“禅师!你看我坐的样子怎么样?” “好庄严,像一尊佛!” 苏东坡听了非常 ...

  2. SNIFFER问题集锦

    SNIFFER相关教程下载: Sniffer使用教程.pdf|Sniffer用法.ppt 具体问题解决: 1.SNIFFER4.75无法使用,打开后提示 No adapter is binding t ...

  3. DOM笔记(六):怎么进行JQuery扩展?

    一.全局函数的扩展 全局函数是将独立的函数添加到JQuery的命名空间中区.在使用的时候,可以通过$.fucnName(param)或者jQuery.funcName(param)方式进行调用. 1. ...

  4. Sunrise Release Version History

    Sunrise Release Version History 1.4.1.0 1.1.0.0 1.0.1.0

  5. 把一个序列转换成非严格递增序列的最小花费 POJ 3666

    //把一个序列转换成非严格递增序列的最小花费 POJ 3666 //dp[i][j]:把第i个数转成第j小的数,最小花费 #include <iostream> #include < ...

  6. 内存溢出(heap corruption detected:)

    今天又遇到了上次出现的bug,然后百度了一下,想起来这是内存溢出的毛病,故记录下来! 出现的问题就是这样: heap corruption detected: after normal block(# ...

  7. AI钻石风格logo教程

    最终图像 与往常一样,这是我们要创建的最终图像: Step 1 按Ctrl+ N创建新文档.从单位下拉菜单中选择像素,在宽度和高度框中输入600,然后单击高级按钮.选择RGB,屏幕(72 PPI),并 ...

  8. Vi的基本使用方法

    转载自http://linux.chinaunix.net/doc/office/2005-01-24/898.shtml vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何 ...

  9. Coffee Script 笔记 1

    安装node 虽然官网提供了单文件bin的版本 但是并不知道怎么安装npm 于是乎还是得安装msi  (坑 当使用 coffee -w -c . 监视文件改变 即时编译的时候会 提示 Error: T ...

  10. Matlab 图像画在坐标轴下

    >> x=linspace(,*pi,); >> y=sin(x); >> figure;plot(x,y,'r-') >> set(gca,'xaxi ...