前段時間,項目中有個需求,需要將linux和windows的時間進行同步,網上也有很多類似時鐘同步的帖子,大致類似;不過本次的linux的機器有點特殊,沒有service命令,而且要求在另一臺suse的linux機器上通過腳本連接到目的linux機器進行時鐘同步。起先我也被困擾的很久,不過辦法都是人
前段時間,項目中有個需求,需要將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
上面是腳本的一部分,就是主要的內容,有興趣的朋友還可以深入一下。