Linux bash 获取自己互联网 IP 地址的脚本

Linux bash script to get own internet IP address

我知道在 bash 编码方面我很生疏,尤其是需要更精细的技巧来处理 awk 或 sed 部分。

我有一个脚本可以记录当前用于互联网的 IP 地址。

它通过使用 wget -q0 URL 或 lynx -dump URL 获得。

最简单的是一个只 return 以纯文本格式输入 IP 地址的站点,没有其他任何内容。很遗憾,该站点已不存在。

代码很简单: IP=$(wget -qO - http://cfaj.freeshell.org/ipaddr.cgi) 可惜!使用代码 returns 没有什么会导致网站消失,因为 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的相关区returns

   [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.x.x 部分。 (我知道它也可以用 python 或 Perl 来完成,但两者都不是我的 Linux 标准设置的一部分,而 awk 和 sed 是。)

由于脚本是用来提取 IP 地址的,因此需要通过 sed 或 awk 执行以下操作:

在上面的示例中(仅显示了 lynx 转储的相关部分,整个转储要大得多,但上面和下面的所有内容都不相关。)它应该是“178.24.x.x”成为 returned.

非常感谢任何帮助让我的 log-ip 脚本恢复正常工作。

目前我收集了一些其他工作 URLs 报告自己的互联网 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/

甚至 duckduckgo returns IP 地址,例如问这个:https://duckduckgo.com/?q=ip+address&ia=answer

至少我知道在使用互联网时,如果不检索向我报告那个 IP 地址的外部 URL,就无法获得自己的 IP 地址。

不完全依赖外部服务,但您可以使用 dig 联系位于 opendns.com 的解析器:

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

我认为这更容易集成到脚本中。

因此,如果您在某个云提供商中拥有 VM,则可以轻松解决此问题。我写了一些小的 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,因为无论如何,只要我记得,我就会受到暴力攻击的轰炸,而且机器没有任何值得突破的东西。

你可以这样做:

wget -O - v4.ident.me 2>/dev/null && echo