Как я могу найти своего интернет-провайдера (ISP), используя скрипт bash?

21

Я хочу использовать имя моего интернет-провайдера в сценарии, и я не знаю, как я могу это сделать.

Пожалуйста, помогите мне, спасибо заранее.

Тара С Вольпе
источник

Ответы:

26

Вы можете использовать множество веб-сайтов, которые предназначены для поиска вашего имени провайдера. Одним из них является whoismyisp .

А для получения вашего имени провайдера, в bash-скрипте вы можете получить этот сайт чем-то вроде curl.

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

Также вы можете найти ISP любого желаемого IP с этой командой:

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

То xxx.xxx.xxx.xxxесть тот IP, который вы хотите найти у своего провайдера.


Дополнительная информация : Вы можете найти свой IP с помощью bash с помощью этой команды (это может быть полезно для скриптов):

dig +short myip.opendns.com @resolver1.opendns.com
Али Размдидех
источник
2
@TaraSVolpe Я рад, что смог помочь тебе
Али Размдидех
2
Этот ответ зависит от макета этого сайта, в то время как ipinfo.io использует четко определенный формат JSON. Я не понимаю, почему этот ответ более проголосовал.
NieDzejkob
2
@NieDzejkob Возможно, потому что ipinfo.io/org дает только номер AS, но не имя ISP
SebMa
1
@SebMa Когда я запустил ответ Байта на своей машине в Ubuntu в Windows 10 (WSL), он вернул номер AS плюс имя ISP, используя curl ipinfo.io/org. Тем не менее я проголосовал за оба ответа и за вопрос, потому что все хорошо :)
WinEunuuchs2Unix
@NieDzejkob curl ipinfo.io/orgне выводит полное имя AS, но curl -s ipinfo.io/ASxxx | grep as-name
выдает
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"
}

Чтобы показать только одно значение, вы можете напрямую отправить запрос по соответствующему пути. Например, для имени провайдера ( org), попробуйте это:

curl ipinfo.io/org

Вдохновлен этим ответом .

Byte Commander
источник
2
Да, ipinfo лучше, чем whoismyisp, из-за формата JSON +1
Али Размдидех,
@AliRazmdideh Очень великодушно, что вы отозвались, ответят другие парни :)
WinEunuuchs2Unix
@ WinEunuuchs2Unix Спасибо, я думаю, что это лучше, чем у меня.
Али Размдидех
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
SebMa
источник
1
Для меня это не работает. Я только что проверил все ответы как в Ubuntu в Windows 10 (WSL), так и в Ubuntu 16.04 с ядром 4.14.27. Ваш вариант 1 выше (ответ байта) возвращается AS852 TELUS Communications Inc.. Ваш вариант 2 выше ничего не возвращает. Принятый ответ использует curl -s https://www.whoismyisp.org | grep -oP '\bisp">\K[^<]+'и возвращает, Telus Communicationsчто является ограниченной версией ответа байта, но все же хорошо. Это один из тех ответов YMMV (ваш пробег может меняться).
WinEunuuchs2Unix
2
Очевидно это зависит от поставщика или от того, что ipinfo.orgимеет в их сборе данных. Для меня curl -s ipinfo.io/orgдает, AS3320 Deutsche Telekom AGпока curl -s ipinfo.io/AS3320 | grep as-nameдает DTAG(через некоторое время). Кроме того, последний снова анализирует вывод HTML (подвержен ошибкам!). Поэтому я буду придерживаться ответа ByteCommander.
PerlDuck
@PerlDuck Когда я использую Германию, AS3320я получаю тот же DTAGрезультат, что и вы. Но мне интересно, если вы используете Канаду, 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 Забавно читать, особенно все странные персонажи в конце. Проявляя осторожность, я разобрал HTML-код в bash: askubuntu.com/questions/900319/…
WinEunuuchs2Unix