整個項目為封閉局域網,項目内客戶端電腦将近五百餘台,其中一部分電腦長期不使用造成BIOS電池片虧電,電腦使用時系統時間重置,局域網内調試開發的軟件客戶端系統時間需慢與服務器系統時間或與服務器系統時間一緻,五百餘台電腦挨個檢查BIOS電池耗時太長且有些電腦隻是臨時使用,更換電池後長期不适用故障還會複現,決定搭建一個NTP服務。
二、電腦系統服務器品牌:Huawei;
服務器系統:Windows Serve 2008;
客戶機品牌:聯想
客戶機系統:Windows 7旗艦版 64bit。
三、服務器NTP搭建搭建NTP很簡單,這個網絡上都有詳細介紹:
1、設置2項注冊表;
2、重啟一下Windows time服務 并設置自動啟動。
3.1、注冊表設置找到系統運行框,輸入注冊表命令“regedit”打開注冊表,按下列路徑:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\TimeProviders\NtpServer]
查找到“Enabled”設置項,基數為“十六進制”,數值數據設置為“1”,1的意思是啟動。
我是Windows 10的注冊表……
按路徑:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Config]
查找“AnnounceFlags” 設置項,此設置項系統默認為10,我們需修改成“5”。(10 的意思是系統時間以主闆BIOS為準,5是以外部時間源為準進行同步。)
基數為“十進制”,數值數據設置為“5”。
我還是windows10的注冊表……
最後這項注冊表設置的目的是,這台電腦兩個網卡,其中一個網卡設置為鍊接互聯網,用于時間校時使用,然後再以此服務器作為局域網時間服務器對下進行時間校準,實際測試可用。
系統時間校準功能默認為一周“604800”秒,Windows10我電腦默認為“32768”秒,各電腦内置晶振芯片頻率略有差異,長期運行會造成時間不一緻,軟件要求時間較高的可以修改客戶機上面的時間同步間隔。
Windows10注冊表飄過~~~~
3.2、系統服務設置找到系統運行框,輸入注冊表命令“services.msc”打開服務對話框。
Windows10運行對話框
在服務對話框中找到“Windows Time”,啟動類型設置為“自動”,服務狀态點“啟動”。ntp時間服務器搭建完成。
Windows Time服務啟動
3.3、NTP服務驗證服務器搭建完成後,驗證一下是否可用,為方便後續調試制作了一個bat文件寫了簡單三行命令:
net stop w32time
net start w32time
w32tm /stripchart /computer:127.0.0.1
*運行需要管理員權限
NTP服務驗證
四、客戶機設置客戶機批量設置建議做一個批處理,并且設置開機啟動,我把批處理添加到計劃任務裡面,每次開機自動設置一次并自動校準時間一次,這樣設置的目的是BIOS電池虧電時時間校準功能可正常使用。
批處理:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers" /ve /t REG_SZ /d 1 /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers" /v 1 /t REG_SZ /d xxx.xxx.xxx.xxx /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters" /v NtpServer /t REG_SZ /d xxx.xxx.xxx.xxx /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient" /v SpecialPollInterval /t REG_DWORD /d 1200 /f
sc config w32time start=auto
ping -n 3 127.0.0.1 > nul
net stop w32time
ping -n 3 127.0.0.1 > nul
net start w32time
ping -n 3 127.0.0.1 > nul
w32tm /config /manualpeerlist:"xxx.xxx.xxx.xxx" /syncfromflags:manual /reliable:yes /update
ping -n 3 127.0.0.1 > nul
net stop w32time
ping -n 3 127.0.0.1 > nul
net start w32time
ping -n 3 127.0.0.1 > nul
net use \\xxx.xxx.xxx.xxx\ipc$ "NTP服務器實際登錄用戶密碼" /user:NTP服務器實際登錄用戶名
ping -n 3 127.0.0.1 > nul
net time \\xxx.xxx.xxx.xxx /set /y
ping -n 3 127.0.0.1 > nul
net time \\xxx.xxx.xxx.xxx /set /y
ping -n 3 127.0.0.1 > nul
net time \\xxx.xxx.xxx.xxx /set /y
*以上命令,請根據注釋進行修改!
*注釋:“xxx.xxx.xxx.xxx”為NTP服務器實際IP地址,IP地址前後均有空格。
*注釋:“1200”為設置系統時間同步間隔20分鐘,可根據實際需要自行修改。
*注釋:在Windows 7系統上運行此批處理需要建立一個連接獲取權限,否則後續運行會報錯,無法進行時間校準。“net use”需NTP服務器上面不要關閉IPC$共享,系統默認為開啟狀态。
*注釋:net time \\xxx.xxx.xxx.xxx /set /y意思是與NTP服務器進行時間校準并按校準時間對本機系統時間進行修改。
五、校準時間并加快調試時需要一些服務器時間比客戶機時間快一些,下面命令就是在獲取NTP服務器時間後快10分鐘,下面命令第14行“set /a min=%tim:~-8,2% 10”的“ 10”就是快10分鐘。想按小時快就修改第13行%後面 數字,按秒快修改第15行。
還好外包的研發人員在後續給修改了此BUG,不過我還是分享出來,供有需要的網友使用。
//@echo off
sc config w32time start=auto
ping 127.0.0.1 -n 3
net stop w32time
ping 127.0.0.1 -n 3
net start w32time
ping 127.0.0.1 -n 3
net use \\xxx.xxx.xxx.xxx\ipc$ "NTP服務器實際登錄用戶密碼" /user:NTP服務器實際登錄用戶名
ping 127.0.0.1 -n 3
net time \\xxx.xxx.xxx.xxx /set /y
ping 127.0.0.1 -n 3
set tim=%time%
set /a hour=%tim:~-11,2%
set /a min=%tim:~-8,2% 10
set sec=%tim:~-5,5%
if %min% geq 60 (set /a min=%min%-60&set /a hour=%hour% 1)
if %hour% geq 24 (set /a hour=%hour%-24)
@time=%hour%:%min%:%sec%
echo %tim%
echo %hour%:%min%:%sec%
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!