bash 스크립트에서 현재 거주 중인 국가의 이름을 사용하고 싶습니다. 다음 명령을 사용하여 외부 IP를 얻을 수 있습니다.
curl ifconfig.me
그런데 우리나라 이름은 어떻게 알 수 있나요?
답변1
ipinfo.io명령줄에서 사용할 수 있는 멋진 JSON API가 있습니다.
$ curl ipinfo.io
{
"ip": "X.X.X.X",
"hostname": "No Hostname",
"city": "Hanoi",
"region": "Ha Noi",
"country": "VN",
"loc": "21.0333,105.8500",
"org": "AS18403 The Corporation for Financing & Promoting Technology"
}
답변2
공개 whois 데이터베이스를 쿼리하면 가까운 정보를 얻을 수 있습니다. 가능한 모든 상황을 "제품화"하는 것은 다소 어려울 수 있지만 합리적인 근사치는 다음과 같습니다.
$ whois a.b.c.d | grep -iE ^country:
a.b.c.d
문제의 IP 주소는 어디에 있나요?
whois
일반적으로 기본적으로 설치되므로 "이 작업을 수행하기 위해 어떤 패키지도 설치하고 싶지 않습니다"라는 합리적인 해석에 적합합니다.추가의소프트웨어".
인쇄오직필드의 값을 country
대문자로만 강제 설정하면(예: 비교를 더 쉽게 하기 위해) 다음을 수행할 수 있습니다.
$ whois a.b.c.d | awk -F':[ \t]+' 'tolower($1) ~ /^country$/ { print toupper($2) }'
답변3
ifconfig.me 이외의 다른 IP 로케이터를 사용하여 이 정보를 제공하십시오. 예:
2015-03-09부터 더 이상 사용할 수 없습니다.
curl -s 'http://geoiplookup.net/geoapi.php?output=countrycode'
또는:
curl -s 'http://geoiplookup.net/geoapi.php?output=country'
(바라보다API세부)
또는:
curl -s http://whatismycountry.com/ |
sed -n 's|.*,\(.*\)</h3>|\1|p'
또는:
curl -s http://whatismycountry.com/ |
sed -n 's|.*> *\(.*\)</h3>|\1|p'
더 정확하게 말하면 다음과 같습니다.
curl -s http://whatismycountry.com/ |
sed -n 's/.*Coordinates \(.*\)<.*/\1/p'
좌표입니다.
이는 페이지의 HTML 형식을 가정합니다. 따라서 나중에 형식을 변경하기로 결정하면 작동이 중단될 수 있습니다.
답변4
다른 답변에서 언급한 것 외에도 ipinfo.io
사용할 수도 있습니다. freegeoip.net
이것은 공식적으로 공개적으로 사용 가능한 코드/데이터베이스를 사용하는 것으로 보이며(필요한 경우 자체 인스턴스에서 실행할 수 있음) 요청 수에 더 높은 제한이 있는 것 같습니다. 15k/시간, ipinfo.io의 요청 수는 1000/일입니다.
% curl -i ipinfo.io
HTTP/1.1 200 OK
Server: nginx
Date: Sun, 17 Sep 2017 02:17:47 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 240
Vary: Accept-Encoding
x-cloud-trace-context: 86d62d74c999fc62715d7dff810ea16c/9504640995707975809;o=0
Access-Control-Allow-Origin: *
X-Content-Type-Options: nosniff
Via: 1.1 google
{
"ip": "88.198.54.xx",
"hostname": "static.88-198-54-xx.clients.your-server.de",
"city": "Nuremberg",
"region": "Bavaria",
"country": "DE",
"loc": "49.4478,11.0683",
"org": "AS24940 Hetzner Online GmbH",
"postal": "90455"
}%
% curl -i freegeoip.net/json/
HTTP/1.1 200 OK
Date: Sun, 17 Sep 2017 02:17:54 GMT
Content-Type: application/json
Content-Length: 230
Connection: keep-alive
Set-Cookie: __cfduid=dacbae017e5ee70d57b251c89c4ba418b1505614674; expires=Mon, 17-Sep-18 02:17:54 GMT; path=/; domain=.freegeoip.net; HttpOnly
Vary: Origin
X-Database-Date: Thu, 07 Sep 2017 04:08:50 GMT
X-Ratelimit-Limit: 15000
X-Ratelimit-Remaining: 14996
X-Ratelimit-Reset: 2697
Server: cloudflare-nginx
CF-RAY: 39f89263d43c6367-FRA
{"ip":"88.198.54.xx","country_code":"DE","country_name":"Germany","region_code":"BY","region_name":"Bavaria","city":"Nuremberg","zip_code":"90455","time_zone":"Europe/Berlin","latitude":49.4478,"longitude":11.0683,"metro_code":0}
%