【问题标题】:Find hard-coded IP addresses in settings files on a server在服务器上的设置文件中查找硬编码的 IP 地址
【发布时间】:2011-12-19 02:49:42
【问题描述】:

为了准备重新分配几台服务器的 IP,我打算搜索设置文件中出现的服务器上的所有 IP 地址。

简单的第一次尝试:

grep -e "[0-9]*\\.[0-9]*\\.[0-9]"

.. 产生误报,因为也允许没有数字的字符串。此外,它还会发现版本号(例如 1.2.3.4.5)不是有效的 IP 地址。

我相信有人已经考虑过这一点,并想出了完美的 IP 地址来查找涵盖所有异常的正则表达式 grep。

【问题讨论】:

  • 谢谢!这是对正确答案的一个很好的提示,但提供的正则表达式不能按原样工作。
  • 即 egrep '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}' 还可以找到 5 位序列号。 ..
  • @Stuart:这是一个不同于接受的答案的正则表达式——我建议你改用答案的更完整的正则表达式(我现在已将其合并到我的答案中)

标签: regex ip


【解决方案1】:

这个怎么样:

(^|[^\.0-9])([0-2]?[0-9]{,2}\.){3}[0-2]?[0-9]{,2}($|[^\.0-9])

使用-e“扩展”grep 运行。它不会匹配超过四个重复组或大于 299 的任何数字(其次最好排除大于 255)。

显然,这仅适用于 IPv4 地址...

编辑:

基于this question 的回答,这是一个仅匹配有效 IPv4 地址的版本(我对其进行了修改,因此它不会匹配超过四个组的数字):

(^|[^\.0-9])(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])($|[^\.0-9])

【讨论】:

    猜你喜欢
    • 2011-07-02
    • 1970-01-01
    • 2015-01-08
    • 2017-06-27
    • 2017-09-18
    • 1970-01-01
    • 2018-06-09
    • 2017-05-15
    • 1970-01-01
    相关资源
    最近更新 更多