それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Dozens DNS とcrontabで、DNSのレコードを管理しDDNS的に使う。

Dozens のAPICurlで叩く

事前にAPIキーをDozensの管理画面で取ってくる。

認証キーを取得する

curl \
-H 'X-Auth-User: takuyaXXXX' \
-H 'X-Auth-Key: auth_token'  \
http://dozens.jp/api/authorize.json 


{"auth_token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}

API のToken取り出したら、次からは、Token使う。

Token出したら、次は、APIにリクエストをくる。

管理ドメインの一覧を出すには、こんな感じ

curl \
-H 'X-Auth-Token: xxxxxxxxxxxxxxxxxxxxxxx' \
 http://dozens.jp/api/zone.json | json_pp

{ domain:
   [ { id: '11046', name: 'mt4s.xxxxx.biz' },
     { id: '4991', name: 't.xxxxx.biz' },
     { id: '4992', name: 'ya.xxxxx.biz' } ] }

レコードリストの取得

レコードリストの取得をして、コマンド管理したいドメイン名を探す。

レコード中のデータを取り出す

curl -H 'X-Auth-Token: xxxxxxxxxxxxxx' \
 http://dozens.jp/api/record/t.example.biz.json  | json_pp

JSONレスポンス

{
   "record" : [
      {
         "name" : "*.t.example.biz",
         "content" : "xxx.xxx.xxx.xxx",
         "prio" : "10",
         "type" : "A",
         "id" : "138426",
         "ttl" : "7200"
      },
      {
         "content" : "ASPMX.L.GOOGLE.COM",
         "type" : "MX",
         "prio" : "10",
         "name" : "t.example.biz",
         "id" : "105568",
         "ttl" : "7200"
      }
   ]
}

レコードを追加する

特定ドメインにレコードを追加する。

ya.example.biz に レコード www を追加してwww.ya.example.biz をつくる

レコード: www A  126.108.xx.xx 10  7200

コマンドはJSONで書くスタイル

curl \
-H 'Content-Type: application/json' \
-H 'X-Auth-Token:xxxxxxxxxxxxxxxx' \
 -d '{"domain" : "ya.example.biz","name" : "www","type"  : "A","prio" : 10, "content" : "126.108.xx.xx", "ttl" : 7200 }'  \
 http://dozens.jp/api/record/create.json

追加したレコードを確認する

追加結果を確認!

 curl -H 'X-Auth-Token: xxxxxxxxxxxxxxxxxx' \
   http://dozens.jp/api/record/ya.example.biz.json | json_pp

{
   "record" : [
      {
         "ttl" : "7200",
         "content" : "xxx.xxx.xxx.xxx",
         "id" : "138427",
         "name" : "www.ya.example.biz",
         "prio" : "10",
         "type" : "A"
      }
   ]
}

レコードのIPを更新する

curl \
-H 'Content-Type: application/json' \
-H 'X-Auth-Token: xxxxxxxxxxxx' \
-d '{"prio" : 10,"content" : "xxx.xxx.xxx.xxx","ttl" : 7200 }'  \
 http://dozens.jp/api/record/update/999999.json 

あとはコマンドを定期的に実行すればいいとわかる!

外部のIPをパパっと調べてパパっと更新するよ

外部IPを貰えるJSONサービスを通して、IP持ってきて更新。

curl \
-H 'Content-Type: application/json' \
-H 'X-Auth-Token: xxxxxxxxxxxxxxxxxxxxxxxxxx' \
-d  "{ \"prio\" : 10, \"content\" : $(curl -s  http://myexternalip.com/json | jq '.["ip"]') ,\"ttl\" : 7200 }" \
  http://dozens.jp/api/record/update/99999999.json
  • 99999 とかいたところは id の数字ですね。

やったね。あとはコレをcrontab に仕込むだけ。

楽ね。