linux 下使rdate命令支持ipv6 ntp server 同步时间
如果使用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 同步时间的更多相关文章
- Linux下使Shell 命令脱离终端在后台运行
--Linux下使Shell 命令脱离终端在后台运行------------------------------------2014/02/14你是否遇到过这样的情况:从终端软件登录远程的Linux主 ...
- VMware ESXi 5.5无法与Windows 2012 NTP Server同步时间
这次笔者需要面对的环境对时间的同步有比较高的要求, 而虚拟化的环境中时间是比较容易出问题的, 您可以参考上一篇博文为什么Domain controller上的time synchronization非 ...
- (转)Linux下使Shell 命令脱离终端在后台运行
转自: http://www.linuxidc.com/Linux/2011-05/35723.htm 方法如下: (1)输入命令: nohup 你的shell命令 & (2)回车,使终端回到 ...
- windows下使用dos命令手工与ntp服务器同步系统时间
管理员模式的命令窗口 net stop w32time &w32tm /unregister &w32tm /register &net start w32time & ...
- Linux下使命令不受终端断开的影响,保持在后台运行的几种方法及原理
摘自https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/ 记录一下Linux下使命令不受终端断开的影响,保持在后台运行的几个方法及其原理.当用 ...
- linux下安装7z命令及7z命令的使用
本文主要介绍了在linux下安装7z命令的方法,同时介绍了7z命令的使用.7z压缩格式拥有众多优点,具有极高的压缩比率,如果你还不了解,请看文章:7z格式.LZMA压缩算法和7-Zip详细介绍. re ...
- Linux下使用mail命令发送邮件
因为需要经常备份网站的数据,所以了解并学习了下linux下如何通过shell来发送邮件,这里以CentOS为例,使用mail命令来进行外部邮件的发送.mail命令的语法如下: Usage: mail ...
- [转帖]linux下安装7z命令及7z命令的使用
linux下安装7z命令及7z命令的使用 https://www.cnblogs.com/yiwd/p/3649094.html yum install p7zip 执行命令为 7za x 或者是 7 ...
- Linux下登录Oracle命令行时删除键^H解决方法
Linux下登录Oracle命令行时删除键^H解决方法 在linux服务器下登录oracle的控制台,如果输入错误,想用删除键删除时却不能删除,输出的是^H的字符. 方法 用如下的命令可以使删除键生效 ...
随机推荐
- MySQL定期分析检查与优化表
定期分析表 ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] 本语句用于分析和存储表的关键字分布.在分析期间,使 ...
- AngularJS自定义指令(Directives)在IE8下的一个坑
在项目中,由于要兼容到IE8,我使用1.2.8版本的angularJS.这个版本是支持自定义指令的.我打算使用自定义指令将顶部的header从其他页面分离.也就是实现在需要header的页面只用在&l ...
- <javascript高级程序设计>笔记
1.要讲一个值转换成其对应的Boolean类型 ,可以调用转型函数Boolean(). var message=“hello world!”; var messageAsBoolean=Boolean ...
- WebGoat学习——跨站请求伪造(Cross Site Request Forgery (CSRF))
跨站请求伪造(Cross Site Request Forgery (CSRF)) 跨站请求伪造(Cross Site Request Forgery (CSRF))也被称为:one click at ...
- matlab的&和&&操作
A&B(1)首先判断A的逻辑值,然后判断B的值,然后进行逻辑与的计算.(2)A和B可以为矩阵(e.g. A=[1 0],B=[0 0]).A&&B(1)首先判断A的逻辑值,如果 ...
- bzoj2940: [Poi2000]条纹
2940: [Poi2000]条纹 条纹游戏是一个双人的游戏.所需要的物品有一个棋盘以及三种颜色的长方形条纹,这三种颜色分别是红色.绿色和蓝色.所有的红色条纹的尺寸是c*1,所有的绿色条纹的尺寸是z* ...
- 《学习OpenCV》练习题第四章第三题a
#include <highgui.h> #include <cv.h> #include "opencv_libs.h" #pragma comment ...
- [POJ] #1004# Financial Management : 浮点数运算
一. 题目 Financial Management Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 173910 Acc ...
- air for ios
在 Adobe AIR 中为不同屏幕尺寸的多种设备提供支持 使用Flash Builder 4.5进行多平台游戏开发 手机屏幕触控技术与提升AIR在Android上的触控体验 AIR Native E ...
- openstack 实例迁移