dポイントプレゼントキャンペーン実施中!

Linuxでhttpプロトコルで時刻合わせするアプリやスクリプトをご存知の方、教えてください。
CentOS5で使うつもりです。ntpプロトコルは使いません。

A 回答 (2件)

Linuxでhttpプロトコルの時刻同期をするコマンドはhtpdateになります。


htpdateで検索してみてください。
httpプロトコルのタイムサーバは国内ではNICT(情報通信研究機構)から配信されています。
一般のディストリビューションには同胞されていませんので各自インストールする必要があります。
具体的なインストールと実行方法は次のようになります。

# wget http://www.clevervest.com/htp/archive/perl/htp-0 …
# tar xzvf htp-0.9.3.tar.gz
# cd htp-0.9.3/sbin
# ./htpdate -d nict.go.jp
TestHEAD http://nict.go.jp
Pragma: no-cache

HTTP/1.1 200 OK
Connection: close
Date: Sat, 13 Feb 2010 17:20:46 GMT
Accept-Ranges: bytes
ETag: "127c3-45c4-47f632d31d746"
Server: Apache
Content-Length: 17860
Content-Type: text/html
Last-Modified: Fri, 12 Feb 2010 08:37:23 GMT
Client-Date: Sat, 13 Feb 2010 17:20:46 GMT
Client-Peer: 133.243.3.34:80
Client-Response-Num: 1

http://nict.go.jp => 0 second(s)
Time not changed (0 sec)

(一般に -d オプションは必要ありません)
うちはNTPを使っているので0秒で誤差ありませんでしたが、誤差があった場合時計が修正されます。

htpdateを/usr/sbinにコピーして、cronにて

3 0 * * * /usr/sbin/htpdate nict.go.jp 2>&1 > /dev/null

とでもしておけばよろしいかと思います。
また、httpdの同期はNTPより精度が落ちますので、ポーリングの頻度を高くしてもあまり意味がありません。
    • good
    • 0

ntpのように正確に合わせるのは難しいでしょうね。

数十ミリ秒誤差があっていいなら、こんな感じで。
ホスト名部分は出来るだけ近くのホストを指定。

#!/bin/bash
HOST=www.iij.ad.jp
exec 3<>/dev/tcp/$HOST/80
echo -e 'HEAD / HTTP/1.0\r\n\r' >&3
DATE=$(grep '^Date:' <&3)
date -s "${DATE#Date:}"
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!