Использование grep для получения IP-адреса

Размещаю это здесь, чтобы предотвратить головную боль у людей, которые ищут эту проблему в гугле. Мне было трудно найти хорошее решение. Я не знал, что есть файл журнала для вещей, связанных с ssh -.

Просмотр файла журнала на сервере(/var/log/auth.log)показал, что разрешения для различных ключей в /etc/ssh/были установлены на 755, что слишком открыто. Только пользователь должен иметь разрешение, чтобы увидеть их. Таким образом, использование chmod 400для всех затронутых клавиш решило мою проблему.

1
10.01.2021, 20:25
2 ответа

Используйтеgrep -P:

-P, --perl-regexp         PATTERNS are Perl regular expressions
1
18.03.2021, 22:37

Обратите внимание, что регулярные выражения на самом деле не предназначены для синтаксического анализа таких вещей, как IPv4-адреса. Вы можете попытаться сделать это с определенной степенью точности :

.

Ваше выражение \d+\.\d+\.\d+\.\d+будет соответствовать любым четырем группам цифр, разделенным точкой, если \dсоответствует цифре самой по себе.

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

В Сопоставление адресов IPv4 -Поваренная книга регулярных выражений О'Рейли есть несколько примеров.

Это проверяет (только )IP-адрес, однако не так много проверок, 299.299.111.1пройдет:

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

Другие примеры на странице пытаются сузить область обнаружения, чтобы получить действительный IP-адрес, посмотрите, что они предлагают для точного извлечения из более длинного текста, и вы поймете, почему IPv4-адреса не являются хорошей площадкой для регулярных выражений :

. ]
\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}↵
(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
0
18.03.2021, 22:37

Теги

Похожие вопросы