cli53 で DDNS クライアントのような動作をするシェルスクリプトサンプル

cli53 を使うと CLI から Route53 のレコード情報を操作することが出来ます。 代表的な使用例は GitHub の README に記載されています。

cli53 は go-lang で書かれている為、インストールはバイナリを配置し、パーミッションを調整するだけと簡単です。

1
2
3
curl -L https://github.com/barnybug/cli53/releases/download/0.8.18/cli53-linux-amd64 \
     -o /usr/local/bin/cli53
chmod 755 /usr/local/bin/cli53

現時点ではバージョン 0.8.18 がインストールされました。

1
2
# cli53 --version
cli53 version 0.8.18

レコードを作成するには以下のように実行します。

1
cli53 rrcreate example.com 'www 60 A 192.168.0.1'

但し、「存在しているレコードを作成」しようとするとエラーになります。 このように「上書きしたい」場合は --replace オプションを指定します。

1
cli53 rrcreate --replace example.com 'www 60 A 192.168.0.2'

レコードを削除するには以下のように実行します。

1
cli53 rrdelete example.com www A

cli53 を使って「グローバルアドレスを確認し、Route53 を更新することで DDNS のような動作を行わせる」スクリプト例は以下の通りです。 グローバルアドレスの確認には以前に書いた CLI から curl でグローバルアドレスを取得する で言及した各種サービスが利用出来ると思います (下記の例では ifconfig.cc を利用しています)。 このサンプルスクリプトでは /var/log/ddns/ 配下へログを出力している為、予めこのディレクトリは作成しておく必要があります。

1
2
3
4
5
6
7
#!/bin/bash
DATE=`date`
DOMAIN="example.com"
RECORT="test.example.com"
IPADDR=`curl --silent ifconfig.cc`
echo "$DATE $IPADDR" >> /var/log/ddns/update.log
cli53 rrcreate --replace $DOMAIN "$RECORT 60 A $IPADDR"