\r\n\r\n
openapi と簡単な bash スクリプトを使って、リモート Linux システムのジオロケーションを見つけることができます。ジオロケーションサーバーは、サーバーが地域のホットスポットに設置されていることを確認し、物理的な世界でそれを追跡するのに役立ちます。
インターネット上の各サーバーには、公衆向けのIPアドレスが設定されています。IPアドレスは、サーバーに直接割り当てることも、そのサーバーにトラフィックを送るルーターに割り当てることもできる。 IPアドレスは、サーバーが世界のどこに位置しているかを知る手がかりになる。ipinfo.coとIP Alertを経由して、サーバーやその他のリモートシステムに関連する都市、州、国を確認するために使用することができるのです。これは、正確なGPS位置情報を提供するものではなく、IPアドレスの大まかなエリアを確認することができます。
ジオロケーションを行うLinuxサーバーなどのリモートシステム上で以下のコマンドを実行することになるので、まずサーバーに接続し、そのシェルにアクセスする必要があります。例えば、SSHで接続することができます。ローカルシステムでコマンドを実行すれば、その場所を見つけることができますが、おそらくあなたはすでにその場所を知っているはずです
geolocationapiにアクセスするためには、HTTPリクエストを行うcurlと、取得したJSONデータを処理するjqという2つのツールが必要です。UbuntuまたはDebianベースのシステムで、ターミナルを開き、apt-getを使用してこれらのツールをインストールします。その他のLinuxディストリビューションでは、代わりにそのLinuxディストリビューションのパッケージインストールツールを使用してください。
sudo apt-get install curl jqジオロケーションデータを取得する前に、サーバーのパブリックIPアドレスも必要です。ターミナルウィンドウでcurlを使用してipinfo.ioファイルを呼び出します。
curl https://ipinfo.io/ipサーバーのパブリックIPがわかったので、ipwillinte.com APIを呼び出してジオロケーションデータを取得することができます。あなたのipアドレス>を、前のコマンドで返されたアドレスに置き換えてください。
curl https://ipvigilante.com/<your ip address>では、この通話でどんなデータが得られたのか、詳しく見ていきましょう。
このAPIは、サーバーが設置されている都市、国、大陸を返します。また、このサーバーをインタラクティブな地図上にプロットする場合に備えて、おおよその緯度と経度の座標も返します。スクリプトでは、「緯度」、「経度」、「都市名」、「国名」を使用することにします。jqコマンドは、APIデータを処理し、これら4つのフィールドを抽出する方法を示しています。
ジオロケーションデータを取得し、CSV形式のファイルに書き出すスクリプトを作成することができます。データは、/tmp/ディレクトリのserver_location.txtというファイルに書き込まれます。お好みのエディタを開いて、geolocation.shというスクリプトを作成します。 ** スクリプトの内容は以下の通りですが、IPアドレスを自分のものに置き換えていることを確認してください。
#!/bin/sh OUTPUT_FILE=/tmp/server_location.txt # Grab this server's public IP address PUBLIC_IP=`curl -s https://ipinfo.io/ip` # Call the geolocation API and capture the output curl -s https://ipvigilante.com/${PUBLIC_IP} | \ jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | \ while read -r LATITUDE; do read -r LONGITUDE read -r CITY read -r COUNTRY echo "${LATITUDE},${LONGITUDE},${CITY},${COUNTRY}" | \ tr --delete \" > \ ${OUTPUT_FILE} doneスクリプトを保存して端末に戻る。このファイルに実行権限を与えて、端末からスクリプトを実行できるようにする。
chmod u+x geolocate.shこれでテストの準備ができました。geolocation.shスクリプトを実行し、以下の出力ファイルの中身を確認してください。
./geolocate.sh cat /tmp/server_location.txtサーバーが1日に1回ジオロケーションを更新するcronジョブを作成し、ファイルに保存してみましょう。毎日のcronジョブは、サーバーの/tmp/フォルダーにあるserver_location.txtという名前のファイルを更新します。24時間のcronジョブの作成は、スクリプトを/etc/cron.dailyの会社ディレクトリに置くだけで、簡単にできます。sudoコマンドを使用して、パーミッションの問題を避けるために、rootユーザーでファイルをコピーする必要があります。次のコマンドを実行して、geolocation.sh を /etc/cron.daily の会社ディレクトリにコピーしてください。
sudo cp geolocate.sh /etc/cron.dailyこれらの変更は即座に行われ、私たちのスクリプトは24時間ごとに実行され、/tmp/server_content_location.txtファイルが更新されます。このデータを使って、地図上にサーバーをプロットしたり、ジオロケーションとトラフィックログを組み合わせて、世界のどこにサーバーのホットスポットがあるかを調べたりと、面白いことができる。