NTPの結果確認をバッチで終わらせる

バッチ

NTPの確認は「w32tm /query /status」のコマンドで事足ります。

ですがコマンドの結果をぱっと見てそれが正しいのかわかりません。

なのでバッチを使い少し手を加えます。

NTPコマンドの結果

C:\Users\xxxx>w32tm /query /status

閏インジケーター: 3 (同期未実行)
階層: 0 (未指定)
精度: -23 (ティックごとに 119.209ns)
ルート遅延: 0.0131985s
ルート分散: 9.3992167s
参照 ID: 0x00000000 (未指定)
最終正常同期時刻: 2021/11/19 1:07:00
ソース: ntp.nict.jp,0x9
ポーリング間隔: 10 (1024s)

いろいろと情報はありますが、まず見る所は2つです。

・最終正常同期時刻

→これが1ヶ月とかだと明らかにダメだとわかります。大体1日以内がOKでしょう。

・ソース

→これが指定したサーバになってないと

どこの誰だかわからない時刻と同期することになってしまいます。

なので設定が消えちゃったりしていないか確認したいです。

バッチ実行結果

早速ですがバッチの結果はこんな感じになります。

NTP○
続行するには何かキーを押してください . . .

NTP○と簡潔に表示させることで誰が見てもOKな事がわかります。(スバラシイ!)

チェックしているのは2つでそれぞれsetで条件を書いています。

・同期時刻が指定した許容範囲内になっている

→set CHECKTIME=%NOW:~,13%

ここの13の数字は「2021/11/19 1:07:00」の左から13番目までを表しています。

どの程度の精度を求めているかによりますが”日”単位で合っていれば良いと考えます。

早見表は下記です。

年(4) 月(7) 日(10) 時(13) 分(16) 秒(19)

今回はここまでですが、許容判定は3時間以内などまだまだ改良の余地はあると思います。

 

・ソース情報が指定したものと一致している

→set SOURCE=ソース: ntp.nict.jp,0x9

「ntp.nict.jp,0x9」は参照しているNTPサーバに書き換えてください。

バッチの内容

@echo off
rem ※※※※1.条件の指定※※※※
rem NTP起動コマンド「net start w32time」
rem NTP停止コマンド「net stop w32time」
rem NTP同期コマンド「w32tm /resync」
set filename=NTP結果.log
set COMMAND=w32tm /query /status
set NOW=%date% %time%
set SYNCTIME=最終正常同期時刻

rem どこまでチェックするか数字で指定 年(4) 月(7) 日(10) 時(13) 分(16) 秒(19)
set CHECKTIME=%NOW:~,12%

rem NTPサーバを指定
set SOURCE=ソース: ntp.nict.jp,0x9

rem 成功時のメッセージ
set OKMESSAGE=NTP○

rem 失敗時のメッセージ
set NGMESSAGE=NTP×(個別に結果を確認してください。)

rem ※※※※2.コマンド実行とファイル出力※※※※
echo %COMMAND% > %filename%
%COMMAND% >> %filename%

rem ※※※※3.ファイル読み込みと条件確認※※※※
for /f "delims=" %%i in (%filename%) do (
rem ソースをチェック
echo %%i | find "%SOURCE%" >NUL
if not errorlevel 1 (
set source-result=OK
)
rem 最終同期時刻をチェック
echo %%i | find "%SYNCTIME%" >NUL
if not errorlevel 1 (
echo %%i | find "%CHECKTIME%" >NUL
if not errorlevel 1 (
set time-result=OK
)
)
)
rem ※※※※4.結果出力※※※※
rem ソースと時刻の両方がOKか確認
echo %source-result% | find "OK" > NUL
if not errorlevel 1 (
echo %time-result% | find "OK" > NUL
if not errorlevel 1 (
echo %OKMESSAGE%
goto ENDBAT
)
)
echo %NGMESSAGE%
:ENDBAT
pause

最後に

ファイルを保存するときの文字コードは「ANSI」にしてください。

ソースの「ntp.nict.jp」は適当にネットにあったNTPサーバを参照させています。

NTPの確認なんて何も考えずボタン一つで終わらせてやりましょう。

コメント

タイトルとURLをコピーしました