\r\n\r\n

bashスクリプトからシステムの地理的位置を取得する方法

openapiと簡単なbashスクリプトを使って、リモートのlinuxのジオロケーションを見つけることができます。ジオロケーションサーバーは、物理的な世界でそれを追跡するのに役立ち、サーバーが地域のホットスポットに位置していることを確認します...

openapi と簡単な bash スクリプトを使って、リモート Linux システムのジオロケーションを見つけることができます。ジオロケーションサーバーは、サーバーが地域のホットスポットに設置されていることを確認し、物理的な世界でそれを追跡するのに役立ちます。

インターネット上の各サーバーには、公衆向けのIPアドレスが設定されています。IPアドレスは、サーバーに直接割り当てることも、そのサーバーにトラフィックを送るルーターに割り当てることもできる。 IPアドレスは、サーバーが世界のどこに位置しているかを知る手がかりになる。ipinfo.coとIP Alertを経由して、サーバーやその他のリモートシステムに関連する都市、州、国を確認するために使用することができるのです。これは、正確なGPS位置情報を提供するものではなく、IPアドレスの大まかなエリアを確認することができます。

リモートシステムとの接続

ジオロケーションを行うLinuxサーバーなどのリモートシステム上で以下のコマンドを実行することになるので、まずサーバーに接続し、そのシェルにアクセスする必要があります。例えば、SSHで接続することができます。ローカルシステムでコマンドを実行すれば、その場所を見つけることができますが、おそらくあなたはすでにその場所を知っているはずです

curlとjqのインストール

geolocationapiにアクセスするためには、HTTPリクエストを行うcurlと、取得したJSONデータを処理するjqという2つのツールが必要です。UbuntuまたはDebianベースのシステムで、ターミナルを開き、apt-getを使用してこれらのツールをインストールします。その他のLinuxディストリビューションでは、代わりにそのLinuxディストリビューションのパッケージインストールツールを使用してください。

sudo apt-get install curl jq

サーバーのパブリックIPアドレスの検索

ジオロケーションデータを取得する前に、サーバーのパブリックIPアドレスも必要です。ターミナルウィンドウでcurlを使用してipinfo.ioファイルを呼び出します。

curl https://ipinfo.io/ip

apiから位置情報を取得する

サーバーのパブリックIPがわかったので、ipwillinte.com APIを呼び出してジオロケーションデータを取得することができます。あなたのipアドレス>を、前のコマンドで返されたアドレスに置き換えてください。

curl https://ipvigilante.com/<your ip address>

では、この通話でどんなデータが得られたのか、詳しく見ていきましょう。

このAPIは、サーバーが設置されている都市、国、大陸を返します。また、このサーバーをインタラクティブな地図上にプロットする場合に備えて、おおよその緯度と経度の座標も返します。スクリプトでは、「緯度」、「経度」、「都市名」、「国名」を使用することにします。jqコマンドは、APIデータを処理し、これら4つのフィールドを抽出する方法を示しています。

apiコールを自動実行するスクリプトを作成

ジオロケーションデータを取得し、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

cronジョブを使用して1日1回ジオロケーションデータを更新する

サーバーが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ファイルが更新されます。このデータを使って、地図上にサーバーをプロットしたり、ジオロケーションとトラフィックログを組み合わせて、世界のどこにサーバーのホットスポットがあるかを調べたりと、面白いことができる。

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ