
AIが必要とするのは、各IPアドレスに関連する都市を見つけることです。私はそれをファイルに保存しました。
たとえば、このファイルの内容は次のとおりです。
99.203.11.34
99.203.11.37
99.203.11.47
99.203.11.51
99.203.11.77
99.203.11.84
99.228.120.115
99.252.235.47
99.45.74.135
99.72.61.242
99.8.236.39
N ...
M ...
次のコマンドを使用して予測結果を取得できますが、1対1に基づいて実行されます。
$ curl ipinfo.io/<IP>/city
> city name
たとえば、
$ curl ipinfo.io/99.72.61.242/city
> Sunrise
私は次のようなものが欲しい:
$ cat ip_list.txt | xargs curl ipinfo.io/$0/city
これは可能ですか?
答え1
while read
ループを使用してください。
while read -r ip; do curl --fail "ipinfo.io/${ip}/city" || break; done<ip_list.txt
ip_list.txt
その後、ファイルを読み取り、各行をip
ループ変数に設定してからカールします。
Stéphaneの提案に従って、--fail
サーバーでエラーが発生した場合は自動的に失敗し、|| break
ループから外れるようにカールにフラグを追加しました。 ipinfo.ioは無料アカウントに月50,000のAPIリクエストを許可するため、保有しているIPの数と使用頻度によってはこれが問題になる可能性があります。
答え2
地理的IPアドレスルックアップでは、通常、MaxMindのgeoIPデータベースを使用することを好みます。 IPアドレスごとにインターネット接続を確立せずにローカルデータベースを使用するため、高速でコール数に制限はありません。
Debian の場合、前提条件としてパッケージをインストールします。
sudo apt-get install geoip-bin geoip-database-extra
次にスクリプトを実行します。
while read -r ip; do geoiplookup $ip | awk -F, ' /City/ { print $5 } ' \
; done < ip_list.txt > cities.txt