- 2007-03-31 (土) 1:59
- DNS
tinydnsでは一定の時刻になるとDNSレコードが切り替わるように予約&TTLの自動減算をしてくれる機能がある。 →djbdns by DJB
そこで時間を指定するのに使うのはexternal TAI64 timestampで、djb先生のお馴染みtai64nとはちょっと違う。
時間表記をtai64に変換する方法をいろいろ探っていたのだが、Nautilusの日記にあったtime2tai64.plでも少しダメだったので、少し手直ししてみた。
#!/usr/bin/perl
use Date::Parse;
$date_str = <>;
$time = str2time($date_str);
$hextime = sprintf("%lx",$time + 10);
$tai64n = sprintf("@40%014s",$hextime);
print "$tai64n¥n";
これを/usr/local/bin/time2tai64 として保存。あとは、
[root@sayuri ~]# echo "2007-03-31 02:00:00" | time2tai64
で得られた値をdjbdnsのdataで使えばOK。たとえば2007/03/31 02:00:00 (perlとシステムのタイムゾーンが設定されていれば日本時間でOK)にtest.example.comを1.8.7.1 から1.8.7.2に切り替え、切り替え後はTTL1800秒で運用するという例はこちら。
+test.example.com:1.8.7.1:0:40000000460d421a +test.example.com:1.8.7.2:1800:40000000460d421a
ちなみにqmailsolutionsの記事ではTAI64値に@を含めるように書いてあるが、これは誤記だとおもいます。
- Newer: PSP カスタムファームウェア 3.30 OE-A を導入 (OSXで)
- Older: mixi Publisherを導入
Comments:1
- 匿名 08-10-20 (月) 18:51
-
TAI64の仕様を探している途中でやって参りました。
よろしければ教えてください。
UNIXタイムスタンプに足している10秒というのは、なんなのでしょうか。UTCとのずれは閏秒の33秒のようなんですが、なんでこの+10というのが出てくるのかが分からなくて困っています。
たしかに仕様どおり組み上げると10秒ずれるんですが。御存じでしたら教えてください。
Trackbacks:0
- Trackback URL for this entry
- http://d.1555.info/2007/03/31/time-period-dns/trackback/
- Listed below are links to weblogs that reference
- tinydnsで時限DNS切り替え from しゃおの雑記帳
