Ip

在 bash 中通過 IP 獲取我的國家

  • November 30, 2019

我想在 bash 腳本中使用我現在所在國家/地區的名稱。我可以使用下一個命令獲取外部 IP:

curl ifconfig.me

但是我怎樣才能得到我的國家名稱呢?

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"
}

您可以通過查詢公共 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) }'

引用自:https://unix.stackexchange.com/questions/83473