Dozens のAPIをCurlで叩く
事前に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 に仕込むだけ。
楽ね。