Сценарий оболочки для фильтрации IP-адресов из файла журнала

0000000 в данном примере - это смещение (шестнадцатеричное, отсчитывается от начала файла) первого байта, напечатанного в конкретной строке.

0000006 в данном примере - это количество (в шестнадцатеричном формате) байтов в файле. В слове "hello" 5 символов и символ перевода строки (0x0a)

Попробуйте отправить эхом более длинный текст или повторить echo "hello" >> 1.txt несколько раз, чтобы увеличить размер файла. Затем посмотрите результаты hexdump.

0
01.05.2018, 03:23
1 ответ

Вы можете использовать скрипт awkдля поиска IP-адресов в данных; собрать каждое их вхождение в массив counts. Когда все входные данные будут прочитаны, выполните цикл по массиву и распечатайте счетчики и IP-адреса, но только если было более двух вхождений, а затем передайте все это для сортировки:

авкскрипт:

NF == 7 && $7 == "ESTABLISHED" {
  split($6, octets, ".")
  ip=octets[1] "." octets[2] "." octets[3] "." octets[4]
  counts[ip]++
}

END {
  for (i in counts)
    if (counts[i] > 2)
        print counts[i], i
}

Запустите как:

awk -f awkscript < input | sort -n

При вводе сэмпла выводится только один IP-адрес с 5 вхождениями:

5 10.51.57.203
1
28.01.2020, 02:43

Теги

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