前段时间,项目中有个需求,需要将linux和windows的时间进行同步,网上也有很多类似时钟同步的帖子,大致类似;不过本次的linux的机器有点特殊,没有service命令,而且要求在另一台suse的linux机器上通过脚本连接到目的linux机器进行时钟同步。起先我也被困扰的很久,不过办法都是人想出来的,接下来叙述一下实现的过程:
操作linux--------目的linux----------目的windows
1.有三台机器,脚本所在的linux----操作linux,需要同步的客户端机器-----目的linux,时钟源机器-----目的windows;首先将目的linux和目的Windows的时钟同步服务都打开,这个网上有很多帖子在这里就不多说了;
2.在操作linux和目的linux之间建立信任关系(操作linux产生密钥交给目的linux,使两者通过脚本进行ssh连接时不需要再输入密码),这个网上类似的也有,就大致讲一下;
3.在操作linux上编写同步脚本:
由于没有service命令,所以只能用先杀掉ntpd的进程来关闭ntp服务,原本想通过查到ntpd的进程号来杀掉进程的,不过在EOF中不支持使用ps命令来查找远程机器的进程号,只能查到本机的进程号,无奈之下只好用了pkill来匹配进程名来杀进程,不过机器中与ntpd有关的进程就只有两个,一个还是我查找的进程,所以用这个也无妨。
(想要用却没用上的:进程号=ps -ef | grep ntpd | grep -v grep | awk '{print $1}')
ssh root@目的linux的ip地址<<EOF
cd /share/init/ntp
pkill -9 ntpd
./ntpdate 目的windows的ip
echo "server 目的windows的ip prefer" >> /etc/ntp.conf
./ntpd
EOF
上面是脚本的一部分,就是主要的内容,有兴趣的朋友还可以深入一下。