如果使用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. Eclipse for PHP Developers + xamp +xdebug

    php 开发环境搭建 1.安装xamp 我的版本是v3.2.1 2.安装下载“Eclipse for PHP Developers”解压即可使用 3.配置“Eclipse for PHP Develo ...

  2. myeclipse 10 优化

    一.Myeclipse10修改字体 MyEclipse10是基于Eclipse3.7内核,但在Eclipse的Preferences-〉general-〉 Appearance->Colors ...

  3. hdu 4381(背包变形)

    题意: 给定n个块,编号从1到n,以及m个操作,初始时n个块是白色. 操作有2种形式: 1 ai xi : 从[1,ai]选xi个块,将这些块涂白. 2 ai xi:从[ai,n]选xi个块,将这些块 ...

  4. 【leetcode】Find Minimum in Rotated Sorted Array II JAVA实现

    一.题目描述 Follow up for "Find Minimum in Rotated Sorted Array":What if duplicates are allowed ...

  5. [转]Linux之type命令

    转自:http://codingstandards.iteye.com/blog/831504 用途说明 type命令用来显示指定命令的类型.一个命令的类型可以是如下之一 alias 别名 keywo ...

  6. windows下ncl生成tiff图(案例)

    一:安装软件和准备数据 1.需要安装Vapor(注意安装路径不要存在空格) 注:版本2.4.2及以后 2.安装NCL,方法见http://www.cnblogs.com/striver-zhu/p/4 ...

  7. jQuery选择器之全面总结

    选择器是jQuery的根基,在jQuery中,对事件处理,遍历DOM和Ajax操作都依赖于选择器.如果能熟练的使用选择器,不仅能简化代码,而且可以达到事半功倍的效果. jQuery中的选择器完全继承了 ...

  8. leetcode@ [146] LRU Cache (TreeMap)

    https://leetcode.com/problems/lru-cache/ Design and implement a data structure for Least Recently Us ...

  9. 【MySQL】源码编译安装和配置MySql 5.5.32(单实例)

    [需求描述] 在CentOS环境中,通过编译源码的方式,安装并且配置“单实例”的MySQL5.5.32数据库. MySQL的安装目录为:/application/mysql-5.5.32 MySQL数 ...

  10. [翻译]创建ASP.NET WebApi RESTful 服务(8)

    本章讨论创建安全的WebApi服务,到目前为止,我们实现的API都是基于未加密的HTTP协议,大家都知道在Web中传递身份信息必须通过HTTPS,接下来我们来实现这一过程. 使用HTTPS 其实可以通 ...