Rad*_*anu 11 ip internet geolocation
我想在 bash 脚本中使用我现在所在的国家/地区的名称。我可以使用下一个命令获取外部 IP:
curl ifconfig.me
Run Code Online (Sandbox Code Playgroud)
但是我怎样才能得到我的国名呢?
use*_*ser 15
您可以通过查询公共 whois 数据库来了解一些情况。“产品化”以处理所有可能的情况可能有点困难,但合理的近似值可能是:
$ whois a.b.c.d | grep -iE ^country:
Run Code Online (Sandbox Code Playgroud)
有a.b.c.d
问题的 IP 地址在哪里。
whois
通常默认安装,因此这符合对“我不想安装任何软件包来执行此操作”的合理解释,读作“我不想安装其他软件”。
要仅打印country
字段的值并强制将其强制为大写(例如,为了使比较更容易),您可以执行以下操作:
$ whois a.b.c.d | awk -F':[ \t]+' 'tolower($1) ~ /^country$/ { print toupper($2) }'
Run Code Online (Sandbox Code Playgroud)
cuo*_*glm 14
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"
}
Run Code Online (Sandbox Code Playgroud)
Sté*_*las 12
使用除 ifconfig.me 之外的另一个 IP 定位器,该定位器提供该信息,例如:
自 2015-03-09 起不再可用
Run Code Online (Sandbox Code Playgroud)curl -s 'http://geoiplookup.net/geoapi.php?output=countrycode'
或者:
Run Code Online (Sandbox Code Playgroud)curl -s 'http://geoiplookup.net/geoapi.php?output=country'
(详情见API)
或者:
curl -s http://whatismycountry.com/ |
sed -n 's|.*,\(.*\)</h3>|\1|p'
Run Code Online (Sandbox Code Playgroud)
或者:
curl -s http://whatismycountry.com/ |
sed -n 's|.*> *\(.*\)</h3>|\1|p'
Run Code Online (Sandbox Code Playgroud)
为了更精确,或:
curl -s http://whatismycountry.com/ |
sed -n 's/.*Coordinates \(.*\)<.*/\1/p'
Run Code Online (Sandbox Code Playgroud)
为坐标。
这对页面的 HTML 格式进行了假设。因此,如果他们决定将来更改该格式,它可能会停止工作。
归档时间: |
|
查看次数: |
15470 次 |
最近记录: |