Brownian motion

around the essentials…

 

Видобування шматка лога FreeRadius

Виникла задача — витягти з лога FreeRadius’а (той, який detail-YYYYMMDD) всі записи, що стосуються певного клієнта: дзвінків на номер (чи з номера) XXXYYZ[0-2] (з певним Called- чи Calling-Station-Id). Вхопився за Python, але, не встигши набрати #!/usr/bin/python, вирішив зробити це з допомогою awk.

Хто не знає — лог FreeRadius’а містить «секції», відділені порожніми рядками. Кожна секція — якась кількість рядків, серед них є Calling-Station-Id = <номер> (чи Called-Station-Id), і мене цікавлять саме секції щодо дзвінків з певних номерів (чи на певні номери).

Отже, «п’ятихвилинний» робочий скрипт:

#
# cutlog.awk :
#
 
BEGIN {
    # flag to indicate "good" set of lines:
    good = 0
    # counters:
    selected = 0
    total = 0
}
{
    # add line to set:
    set = set $0 "\n"
 
    # if wanted condition occur, flag set as good:
    if ($0 ~ pattern) {
        good = 1
    }
 
    # if empty line...
    if (!length) {
        # print set if it is "good":
        if (good) {
            printf ("%s", set)
            selected += 1
        }
        total += 1
        # start to work again:
        good = 0
        set = ""
    }
}
END {
    printf("%i records (%i lines) processed\n", total, NR) &gt; "/dev/stderr"
    printf("%i records matched\n", selected) &gt; "/dev/stderr"
    printf("Pattern was: '%s'\n\n", pattern) &gt; "/dev/stderr"
}

Тепер можна виколупати шматок лога з потрібними записами:

awk -f cutlog.awk pattern='Station-Id = \"XXXXYYZ[0-2]\"' detail-YYYYMMDD > detail-YYYYMMDD.part

UPDATE: Python is better ;-)

(No Ratings Yet)

Напишіть відгук

XHTML: Можете використовувати такі теґи: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Останні публікації

Most Rated

Highest Rated

Теґи

Архіви