linux下自动同步internet时间

linux下很简单直接一句即可: ntpdate time.nist.gov

ntp后面参数为internet时间服务器url或ip即可。

但是ntpdate命令需要root特权,如果做成自动运行每次要手动输入

就不爽鸟,如何解决呢? 3种办法:


1 直接echo管道输入密码:

echo "your_passwd"|sudo -S ntpdate time.nist.gov

这个方法缺点是密码是明文,容易被黑。


2expect自动输入密码:

#!/usr/bin/expect

set timeout 30
spawn sudo ntpdate time.nist.gov
expect "password"
send "your_passwd "
interact

expect后面的string要和sudo等待提示符string相匹配哦,否则

停不下来的,缺点同上,容易被黑。


3将ntpdate命令设为不需要sudo密码:

vi /etc/sudoers

添加一行:

root ALL=NOPASSWD:/usr/sbin/ntpdate

以后任何人运行ntpdate这个命令都不需要密码鸟。


试过links和curl以及wget,从标准时间网站抓取页面,然后分析之,结果

动态的统统抓不到,用浏览器的另存为倒没问题,不过没法搞自动化哦。

网上说利用浏览器的引擎写代码可以,不过比较复杂只有作罢鸟。


题外话:

知道在win7上咋自动同步吗?难啊!!!(欢迎反驳,并给出证据)

控制台下用w32tm,和net time统统无效,貌似在xp上是可以的。

最后用ruby写代码搞定鸟:

gem install net-ntp


require 'net/ntp'

right_date = Net::NTP.get.time
d=right_date.strftime("%Y-%m-%d")
t=right_date.strftime("%H:%M:%S")
`date #{d}`
`time #{t}`


加入启动文件夹,还要应付该死的UAC,关掉鸟,结果勉强达成目鸟。:(

原文地址:https://www.cnblogs.com/keanuyaoo/p/3341606.html