Bash: найти все IP-адреса, которые использовались для попытки несанкционированного доступа

Bash: найти все IP-адреса, которые использовались для попытки несанкционированного доступа

Я работаю над своей виртуальной машиной на bash. Мне предлагается найти все IP-адреса, которые использовались для попытки доступа к машине без авторизации, используя файл auth.log. Кажется, я не нашел ответа на свою проблему. Вот пример:введите описание изображения здесь

все возвращенные строки должны быть записаны в мой общий файл /mnt/analyse/traitement/cueillette.txt. Пожалуйста, помогите! Спасибо

решение1

Вам не нужно перенаправлять grep в grep (это почти всегда признак того, что вы используете неэффективный, ошибочный подход. sedодного этого достаточно для этой задачи. или awk. или perl), и это sudo su root catпросто чепуха.

Попробуй это:

$ sudo sed -n -E -e '/sshd.*authentication failure/{s/^.*rhost=([0-9.]+).*/\1/p}' \ 
    /media/sf_partageAuth/auth.log > /mnt/analyse/traitement/cueillette.txt 

Для каждой строки, которая соответствует «сбою аутентификации» (обратите внимание,нет"authentiфиcation"), этот sedскрипт удаляет все от начала строки до (включительно) rhost=и все после IP-адреса, а затем выводит строку.

Он использует sedопцию -Eдля расширенных регулярных выражений, так что ()и +работают без необходимости экранирования.

Обратите внимание, что хотя sedкоманда запускается как root с sudo, перенаправление вывода не выполняется — это делается в вашей исходной не-root оболочке. Если вам нужны права root для записи в выходной файл, запустите teeс sudo, например:

$ sudo sed -n -E -e '/sshd.*authentication failure/{s/^.*rhost=([0-9.]+).*/\1/p}' \
    /media/sf_partageAuth/auth.log | 
    sudo tee /mnt/analyse/traitement/cueillette.txt > /dev/null

Связанный контент