如何使用bash脚本找到我的Internet服务提供商(ISP)?


21

我想在脚本中使用Internet服务提供商的名称,但我不知道该怎么做。

请帮助我,在此先感谢。

Answers:


26

您可以使用提供的许多网站来找到您的ISP名称。其中之一是whoismyisp

为了获得您的ISP名称,可以在bash脚本中通过来获得此站点curl

curl -s https://www.whoismyisp.org | grep -oP -m1 '(?<=isp">).*(?=</p)'

您也可以使用以下命令找到任何所需IP的ISP:

curl -s https://www.whoismyisp.org/ip/xxx.xxx.xxx.xxx | grep -oP -m1 '(?<=isp">).*(?=</p)'

xxx.xxx.xxx.xxx就是您要查找其ISP的IP。


附加信息:您可以使用以下命令通过bash查找IP(这可能对脚本有帮助):

dig +short myip.opendns.com @resolver1.opendns.com

2
@TaraSVolpe我很高兴可以为您提供帮助
Ali Razmdideh

2
该答案取决于此网站的布局,而ipinfo.io使用定义明确的JSON格式。我不明白为什么这个答案更合适。
NieDzejkob

2
@NieDzejkob也许是因为ipinfo.io/org仅提供了AS号,但没有提供ISP的名称
SebMa

1
@SebMa当我在Windows 10(WSL)的Ubuntu中的计算机上运行Byte的答案时,它使用返回了AS编号和ISP名称curl ipinfo.io/org
不管怎样,

@NieDzejkob curl ipinfo.io/org不会输出AS的全名,但curl -s ipinfo.io/ASxxx | grep as-name会输出:)
SebMa

27

您可以使用ipinfo.io等服务来确定您的公共IP,其中包括一些其他信息,例如提供商公司名称。

通常可以在浏览器中访问该站点,但是如果从命令行使用例如来查询该站点curl,它们将以干净且定义明确的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

受到这个答案的启发。


2
是的,由于ipinfo的JSON格式为+1,因此它比whoismyisp更好
Ali Razmdideh,

@AliRazmdideh非常坦率,实际上您支持其他人的回答:)
WinEunuuchs2Unix

@ WinEunuuchs2Unix谢谢,我认为这比我的要好。
Ali Razmdideh

1

首先,我获取自治系统号:

$ curl -s ipinfo.io/org
AS2094 Renater

然后,我获取该AS的全名:

$ curl -s ipinfo.io/$(curl -s ipinfo.io/org | cut -d“” -f1)| awk'/ as-name / {print $ NF}'

$ whois $(curl -s ipinfo.io/org | cut -d" " -f1) | awk -F: 'BEGIN{IGNORECASE=1}/(as-?name|org-?name):/{sub("^  *","",$2);print$2}'
FR-TELECOM-MANAGEMENT-SUDPARIS
Renater

1
对我来说,它不起作用。我刚刚在Windows 10(WSL)中的Ubuntu和带有内核4.14.27的Ubuntu 16.04中测试了所有答案。您上面的选项1(字节的答案)返回 AS852 TELUS Communications Inc.。您上面的选项2不返回任何内容。接受的答案使用curl -s https://www.whoismyisp.org | grep -oP '\bisp">\K[^<]+'并返回Telus Communications,这是Byte答案的有限版本,但仍然不错。这是这些YMMV(您的里程可能有所不同)的答案之一。
WinEunuuchs2Unix

2
显然,这取决于提供者或ipinfo.org他们的数据收集中包含的内容。对我来说,curl -s ipinfo.io/orgAS3320 Deutsche Telekom AG同时curl -s ipinfo.io/AS3320 | grep as-nameDTAG(过了一会儿)。另外,后者再次解析HTML输出(容易出错!)。因此,我将坚持使用ByteCommander的答案。
PerlDuck

@PerlDuck使用德国的时,您得到的输出AS3320相同DTAG。但是我不知道您是否使用Canada's curl -s ipinfo.io/AS852 | grep as-name会像我一样得到空输出。
WinEunuuchs2Unix

@ WinEunuuchs2Unix是的,我也是。无输出。我估计curl -s ipinfo.io/org根据请求的IP curl -s ipinfo.io/AS3320返回数据,而根据给定的参数返回数据(忽略请求的IP)。无论如何。在没有适当的解析器的情况下解析HTML几乎总是一个坏主意。你知道这个著名的答案堆栈溢出?阅读很有趣。
PerlDuck

@PerlDuck尤其是最后所有怪异的字符,很有趣。小心谨慎,我确实用bash解析HTML代码:askubuntu.com/questions/900319/…–
WinEunuuchs2Unix
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.