One IT Thing

IT業界を楽しむ為の学習系雑記

network

グローバルIP確認をコマンド化

投稿日:

「Dynamic DNSサービスで定期的にDNS更新をしなきゃいけないけど、固定IPじゃないから変わった時に一々調べるのが煩わしい」

手で調べるのは面倒くさいです。停電なんかでONUが再起動してIPが変わったりするとゲンナリしたりします。

手作業が発生しないようにWeb APIがあるサービスを使ってコマンド化、cronで動かせるようにしておきます。

この類のサービスは古くから数有れど、ip-api.comで取れる情報量の多さは若干怖いです。

実行環境

  • 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が貰えます。
(jqにパイプして整形しています)

正確ではないにせよ情報取れ過ぎて怖い。

# 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アドレスが取れました。

-network
-, ,

執筆者:

関連記事

whoisコマンドで新興TLDのドメイン創設日を調べる

各ドメインの情報は属するトップレベルドメイン(.jpなど)が管理するDNSサーバによって管理されています。この情報を辿って指定したドメインの情報を参照する仕組みが「whois」です。 最近は各トップレ …

JavaとPerlでTCPソケット通信

目次1 はじめに2 対象読者3 実装3.1 TCPサーバ(Perl)3.2 TCPクライアント(Java)3.3 実行4 まとめ はじめに 前回の続きです。 One IT ThingJava …

JavaとPerlでUDPソケット通信

目次1 はじめに2 対象読者3 実装3.1 UDPサーバ(Perl)3.2 UDPクライアント(Java)3.3 実行4 まとめ はじめに 本棚を整理していたらラクダ本が出てきました。うわー懐かしい、 …

インターネット速度テストサービス10個を順位づけしてみる

「インターネット疎通の速度が帯域通りになっているか確かめたい」 仕事でもプライベートでもそんなニーズがあります。 数多あるインターネット速度計測サービスを試してみて「日本国内で使う場合、最も正確な速度 …

Linux、Mac、Windows間のネットワーク速度をiperf3で調べる

なんかネットワークが遅いから調べたい。あのLANケーブルひょっとして100Mbps用じゃない?1Gbpsじゃないかも。試験的にネットワーク帯域を絞ったから通信速度を確認したい。 こういった時、通信する …


shingo nakanishi。東京で消耗中の職歴20年越え中年ITエンジニアです。「生涯現役プログラマを楽しむ」ことができる働き方探しをライフワークにしています。

19歳(1996年)から書き始めた個人日記が5,000日を超え、残りの人生は発信をして行きたいと思い、令和元日からこのサイトを開始しました。勉強と試行錯誤をしながら、自分が経験したIT関連情報を投稿しています。