Я хочу использовать имя моего интернет-провайдера в сценарии, и я не знаю, как я могу это сделать.
Пожалуйста, помогите мне, спасибо заранее.
Я хочу использовать имя моего интернет-провайдера в сценарии, и я не знаю, как я могу это сделать.
Пожалуйста, помогите мне, спасибо заранее.
Ответы:
Вы можете использовать множество веб-сайтов, которые предназначены для поиска вашего имени провайдера. Одним из них является 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
curl ipinfo.io/org
. Тем не менее я проголосовал за оба ответа и за вопрос, потому что все хорошо :)
curl ipinfo.io/org
не выводит полное имя AS, но curl -s ipinfo.io/ASxxx | grep as-name
Вы можете использовать, например, услуги 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
Вдохновлен этим ответом .
Сначала я выбираю номер автономной системы:
$ 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
AS852 TELUS Communications Inc.
. Ваш вариант 2 выше ничего не возвращает. Принятый ответ использует curl -s https://www.whoismyisp.org | grep -oP '\bisp">\K[^<]+'
и возвращает, Telus Communications
что является ограниченной версией ответа байта, но все же хорошо. Это один из тех ответов YMMV (ваш пробег может меняться).
ipinfo.org
имеет в их сборе данных. Для меня curl -s ipinfo.io/org
дает, AS3320 Deutsche Telekom AG
пока curl -s ipinfo.io/AS3320 | grep as-name
дает DTAG
(через некоторое время). Кроме того, последний снова анализирует вывод HTML (подвержен ошибкам!). Поэтому я буду придерживаться ответа ByteCommander.
AS3320
я получаю тот же DTAG
результат, что и вы. Но мне интересно, если вы используете Канаду, curl -s ipinfo.io/AS852 | grep as-name
вы получите нулевой результат, как я.
curl -s ipinfo.io/org
возвращает данные на основе запрашивающего IP, а curl -s ipinfo.io/AS3320
возвращает данные на основе заданного параметра (игнорируя IP-адрес запроса). Так или иначе. Разбор HTML без правильного парсера - почти всегда плохая идея. Вы знаете этот знаменитый ответ о переполнении стека ? Это весело читать.