LINUX.ORG.RU

Определить свой внешний IP адрес

 


1

1

Знатокам bash, grep, регулярок и прочего.
Есть скрипт, который обновляет запись в DNS яндекса, и там определяется IP адрес вот так:

IP="$(curl internet.yandex.ru 2>/dev/null | grep IPv4 | awk '{print $3}')"
Сейчас internet.yandex.ru редиректит (301) на yandex.ru/internet, и страница выглядит, видимо, по-другому. (и этой строчкой IP не достаёт)
Собственно, нужно как-то выдрать IP оттуда. Или взять какой-нибудь аналогичный сервис, выдающий свой IP, чтобы распарсить его.
Что посоветуете?

и страница выглядит, видимо, по-другому

1. Узнать, как выглядит страница
2. Выдрать нужное поле
3. ???
4. PROFIT!

ymn ★★★★★
()

Советую вбить в поиск слова «bash get external ip»

anonymous
()
$ wget -O - http://myip.ru/ 2>/dev/null |\
sed -rn '\~href="/network/speedtes~{n;s/.*>([0-9.]+).*/\1/p}'
emulek
()

да, яндекс можно починить:

wget -O - 'internet.yandex.ru' 2>/dev/null |\
sed -rn 's/.*IP-адрес.*:\s+([0-9.]+).*/\1/p'

emulek
()

ip.icanhazip.com

ip6.icanhazip.com

Или просто icanhazip.com

Deleted
()
Ответ на: комментарий от anonymous

глупый, количество звёзд отражает не уровень владения уличной магией, а всего лишь активность на форуме.

KJIayC
()

Держи :)

curl -o - 2ip.ru 2>/dev/null | perl -e '$s="";while(<>){$s.=$_}($r)=$s=~/<big id="d_clip_button">(.*?)<\/big>/i;print"$r\n"'
afiskon
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.