파일의 IP 주소에서 도시 위치 가져오기

파일의 IP 주소에서 도시 위치 가져오기

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 ...

다음 명령을 사용하여 예상 결과를 얻을 수 있지만 일대일 기반으로 수행됩니다.

$ 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

관련 정보