「Dynamic DNSサービスで定期的にDNS更新をしなきゃいけないけど、固定IPじゃなくて変わった時に調べるのが煩わしい」
といった時に手作業が発生しないようにWeb APIがあるサービスを使ってコマンド化しておき、cronなどで自動実行できるようにしておきます。
目次
実行環境
- CentOS 7.6
- curlコマンド
- jqコマンド
Web APIがあるグローバルIP確認サービス
ドメイン創設年をサービス開始年として判断しています。
ip-api.com
サービス開始:2012年
whois情報や緯度経度も返してくれるスーパー便利API。
httpbin.org
サービス開始:2011年
リクエストを編集したりBasic認証を付けてシミュレーションしたり、も出来るプログラマ向けAPI。
inet-ip.info
サービス開始:2013年
レスポンスフォーマットはjson、yaml、toml。
globalip.me
サービス開始:2014年
レスポンスフォーマットはjson、csv、xml。
ip-api.comでグローバルIP取得を自動化
今回はip-api.comを採用します。
コマンドラインJSONパーサ「jq」をインストール
Web APIが返却するフォーマットは大半JSONに対応している為、curlで受け取ったJSONを解析できるようにjqコマンドを入れておきます。
# yum install jq
インストール:
jq.x86_64 0:1.5-1.el7
結果をjsonで貰う
ip-api.com/jsonをGETするとjsonが貰えます。
# curl -Ss http://ip-api.com/json/ | jq
{
"as": "プロバイダ",
"city": "市区町村",
"country": "Japan",
"countryCode": "JP",
"isp": "プロバイダ名",
"lat": 緯度,
"lon": 軽度,
"org": "組織名",
"query": "IPアドレス",
"region": "13",
"regionName": "Tokyo",
"status": "success",
"timezone": "Asia/Tokyo",
"zip": "郵便番号"
}
queryキーにIPアドレスが入っていることが分かったのでjqコマンドで抜き出します。
curlの-sで余分な進捗表示を消し、-Sでエラーは表示するようにしておきます。
jqの-rオプションはダブルクォートを省いて表示してくれます。
# curl -sS http://ip-api.com/json/ | jq -r '.query'
118.xxx.xxx.xxx
無事自宅のグローバルIPアドレスが取れました。