Найти жестко запрограммированные IP-адреса в файлах настроек на сервере - PullRequest
0 голосов
/ 19 декабря 2011

При подготовке к повторному IP-адресу нескольких серверов я намереваюсь найти все IP-адреса на серверах, которые встречаются в файлах настроек.

Простая первая попытка:

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

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

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

1 Ответ

2 голосов
/ 19 декабря 2011

Как насчет этого:

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

Запустить с -e «расширенным» grep. Он не будет совпадать ни с одним числом с более чем четырьмя повторяющимися группами или с числом, превышающим 299 (лучше всего исключать больше, чем 255).

Очевидно, это работает только для адресов IPv4 ...

EDIT:

Опираясь на ответ на этот вопрос , вот версия, которая соответствует только действительным адресам 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])
...