IPアドレスに基づいてリモートUbuntuマシンの地理的位置を取得したい場合があります。この記事では、最初にシステムのパブリックサーバーIPを取得し、次にこのIPを使用して地理的な場所を取得する方法について説明します。これらはすべてipinfo.ioとipvigilante.comによって提供されるAPIを介して行われます
この記事に記載されているコマンドと手順をUbuntu18.04LTSシステムで実行しました。
端末上のIPアドレスの地理的位置を表示する
サーバーの地理的な場所を取得するには、CurlダウンローダーとJQコマンドラインツールが必要です。このツールを使用すると、インターネットのジオロケーションAPIから必要なデータを取得して処理できます。これらのツールをインストールし、マシンのパブリックIPを使用して必要な位置情報を取得するには、次の手順に従ってください。
ステップ1:Curlおよびjqパッケージをインストールする
Curlとjqは、公式のUbuntuリポジトリから簡単に入手でき、apt-getコマンドを使用してコマンドラインからインストールできます。
システムのアプリケーションランチャー検索またはCtrl+Alt+Tショートカットを使用してターミナルアプリケーションを開きます。
次のステップは、次のコマンドを使用してシステムのリポジトリインデックスを更新することです。
$ sudo apt-get update
これは、インターネットから利用可能な最新バージョンのソフトウェアをインストールするのに役立ちます。
Ubuntuでソフトウェアを追加、削除、構成できるのは、許可されたユーザーのみであることに注意してください。
これで、必要なツールをインストールする準備が整いました。これを行うには、次のコマンドをsudoとして実行します。
$ sudo apt-get install curl jq
システムはsudoのパスワードを要求し、インストールを続行するためのY/nオプションも提供する場合があります。 Yと入力し、Enterキーを押します。ソフトウェアがシステムにインストールされます。ただし、インターネットの速度によっては、処理に時間がかかる場合があります。
ステップ2:Ubuntuマシン/サーバーのパブリックIPを見つける
インターネット上のすべてのサーバーは、パブリックIPアドレスによって認識されます。これは、サーバーに直接またはネットワークトラフィックルーターを介して割り当てられたIPアドレスです。 ipinfo.ioが提供するAPIを使用して、マシンのこのIPを取得できます。
パブリックIPを取得するには、次のcurlコマンドを使用します。
$ curl https://ipinfo.io/ip
プライバシーの問題のためにここでぼやけている出力は、インターネットの世界でサーバーが認識されるパブリックIPです。
ステップ3:パブリックIPに基づいてジオロケーションを取得する
パブリックIPがわかったら、ipvigilante.comのAPIにリクエストを送信して、サーバーの地理的な場所を送信できます。下記のcurlコマンドを使用して、次のような場所の詳細を取得します。
- 大陸
- 国
- 州/県
- 市
- 緯度と経度
$ curl https://ipvigilante.com/<public-IP>
取得する情報は非常に詳細であり、目的を十分に果たします。
Bashスクリプトを使用して地理的位置を印刷する
地理的位置を確認する必要があるたびに上記の手順に従う代わりに、ここで説明するbashスクリプトを使用できます。このbashスクリプトを使用すると、システムを自動化して、このスクリプトを実行する1つのコマンドでサーバーの地理的な詳細を取得できます。これがあなたがそれについて行くことができる方法です:
お気に入りのテキストエディタの1つで新しいスクリプトファイルを開きます。 geo_location.sh
という名前の空のスクリプトファイルを開くために、nanoエディターを使用します。$ nano geo_location.sh
その空のファイルに、次のスクリプトを追加します。
curl -s https://ipvigilante.com/$(curl -s https://ipinfo.io/ip) | jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name'
ヒント: スクリプト全体をbashファイルに入力する代わりに、ここからスクリプトをコピーして、Ctrl + Shift + Vを使用するか、右クリックメニューの[貼り付け]オプションを使用して、ターミナルに貼り付けることができます。
ここで、Ctrl + Xショートカットを使用してファイルを終了し、「変更されたバッファを保存しますか?」にファイルを保存します。 Yと入力し、Enterキーを押してプロンプトを表示します。
このファイルを実行可能スクリプトにするには、ターミナルで次のコマンドを実行します。
$ chmod +x geo_location.sh
最後に、このスクリプトを次のように実行します。
$ ./geo_location.sh
このスクリプトがサーバーの緯度、経度、都市、国の名前をターミナルにきれいに出力する方法を確認できます。
サーバーのジオロケーションを1回だけ取得する必要がある場合は、bashスクリプトを作成する必要はありません。そうしないと、パブリックIPに基づいてUbuntuマシンのグラフィカルな場所を確認する必要があるたびに、スクリプトによってプロセス全体が自動化されます。