问题描述
我想在脚本中使用我的互联网服务提供商的名称,但我不知道该怎么做。
请帮助我,提前致谢。
最佳方案
你可以使用例如ipinfo.io 的服务用于确定您的公共 IP,包括一些附加信息,例如提供商公司名称。
该网站可以在您的浏览器中正常访问,但如果您使用例如 命令行 查询它curl
,它们以干净的 well-defined JSON 格式响应,因此您不需要解析任何 HTML:
$ curl ipinfo.io
{
"ip": "xxx.xxx.xxx.xxx",
"hostname": "xxxxxxxxxxxxxxxxxxxxxxxxxxx.xx",
"city": "xxxxxxxx",
"region": "xxxxxxxxxx",
"country": "xx",
"loc": "xxx.xxxx,xxx.xxxx",
"org": "xxxxxxxxxxxx",
"postal": "xxxxx"
}
如果只显示一个值,可以直接向相应路径发送请求。例如。对于 ISP 名称 ( org
),请尝试以下操作:
curl ipinfo.io/org
灵感来自 this answer 。
次佳方案
您可以使用提供的许多网站来查找您的 ISP 名称。其中之一是 whoismyisp 。
要在 bash 脚本中获取您的 ISP 名称,您可以通过类似 curl.
的方式获取此站点
header='--header=User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11'
wget "$header" -q -O - whoismyisp.org | grep -oP -m1 '(?<=block text-4xl\">).*(?=</span)'
您还可以使用以下命令找到任何所需 IP 的 ISP:
header='--header=User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11'
wget "$header" -q -O - whoismyisp.org/ip/xxx.xxx.xxx.xxx | grep -oP -m1 '(?<=block text-4xl\">).*(?=</span)'
其中 xxx.xxx.xxx.xxx
是您要查找其 ISP 的 IP。
附加信息:您可以使用以下命令通过 bash 找到您的 IP(这可能对脚本有帮助):
dig +short myip.opendns.com @resolver1.opendns.com