Linux bash скрипт для получения собственного целого rnet IP-адреса - PullRequest
1 голос
/ 05 февраля 2020

Я знаю, что довольно сильно заржавел, когда дело доходит до bash кодирования, особенно от более сложной, необходимой хитрости при обработке частей awk или sed.

У меня есть скрипт, который регистрирует IP-адрес, используемый в настоящее время для the interwebs.

Он получает это, используя wget -q0 URL или lynx -dump URL.

Самым простым был сайт, который возвращал IP-адрес только в виде обычного текста и ничего больше , К сожалению, этот сайт больше не существует.

Код был прост, как может быть: IP=$(wget -qO - http://cfaj.freeshell.org/ipaddr.cgi) Но, увы! использование кода ничего не возвращает, потому что сайт пропал, как Lynx может сказать нам:

$ lynx -dump http://cfaj.freeshell.org/ipaddr.cgi

Looking up cfaj.freeshell.org
Unable to locate remote host cfaj.freeshell.org.
Alert!: Unable to connect to remote host.

lynx: Can't access startfile http://cfaj.freeshell.org/ipaddr.cgi

Некоторые другие сайты, которые я использовал для поиска с той же целью, больше не работают.

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

Вот соответствующая область того, что lynx -dump возвращает

   [33]powered by

Ihre IP-Adresse lautet:

   178.24.x.x
   Ihre IPv6-Adresse lautet:

   Ihre System-Informationen:

при запуске это выглядит следующим образом:

lynx -dump https://www.wieistmeineip.de/

Теперь мне нужен либо awk, либо sed, чтобы найти 178.24.xx часть. (Я знаю, что это также можно сделать с помощью python или Perl, но оба они не являются частью стандартной настройки моего Linux, в то время как awk и sed - это.)

Поскольку скрипт чтобы извлечь IP-адрес, необходимо выполнить следующие действия с помощью sed или awk:

  • Искать «Ihre IP-Adresse lautet:»
  • Пропустить следующую строку.
  • Пропустить пробел в начале
  • Вернуть только то, что осталось от этой строки (без lf в конце).

В приведенном выше примере (который показывает только соответствующая часть дампа Lynx, весь дамп намного больше, но все выше и ниже не имеет значения.) это будет "178.24.xx", который должен быть возвращен.

Любая помощь, очень ценная, чтобы получить мой Сценарий log-ip возвращается в рабочее состояние.

В настоящее время я собрал некоторые другие рабочие URL-адреса, которые сообщают свой собственный inte rnet IP. Любой из них также может быть использован, но область вокруг указанного IP будет отличаться от приведенного выше примера. Это:

https://meineipinfo.de/
http://www.wie-ist-meine-ip.net/
https://www.dein-ip-check.de/
https://whatismyipaddress.com/
https://www.whatismyip.org/
https://www.whatismyip.net/
https://mxtoolbox.com/whatismyip/
https://www.whatismyip.org/my-ip-address
https://meineipadresse.de/

Даже DuckDuck go возвращает IP-адрес, когда, например, спросили это: https://duckduckgo.com/?q=ip+address&ia=answer

По крайней мере, я не знаю, как получить собственный IP-адрес при использовании inte rnet без извлечения внешнего URL-адреса, который сообщает мне этот IP-адрес.

Ответы [ 3 ]

2 голосов
/ 05 февраля 2020

Вы можете сделать:

wget -O - v4.ident.me 2>/dev/null && echo
1 голос
/ 05 февраля 2020

Итак, если у вас есть виртуальная машина в каком-либо облачном провайдере, вы можете легко решить эту проблему. Я написал небольшое приложение Go, которое возвращает HTTP-запрос. Например:

 $ curl 167.99.63.182:8888
Method -> 
    GET

Protocol -> 
    HTTP/1.1

Headers -> 
    User-Agent: [curl/7.54.0]
    Accept: [*/*]

Content length (in Bytes) -> 
    0


Remote address -> 
    179.XXXXX 

Payload
####################

####################

Где удаленный адрес - это адрес, который получило приложение, следовательно, ваш IP.

И если вам интересно, да, 167.99.63.182 - это IP-адрес сервер, и вы можете свернуть его прямо сейчас и проверить его. Я раскрываю IP-адрес, так как в любом случае на меня нападают атаки с помощью грубой силы, пока я себя помню, и у машины нет ничего, что стоило бы прорваться.

0 голосов
/ 05 февраля 2020

Не совсем, не полагаясь на внешние сервисы, но вы можете использовать dig, чтобы связаться с решателем на opendns.com:

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

Я думаю, что это проще интегрировать в скрипт.

...