Hirdetés

Új hozzászólás Aktív témák

  • CPT.Pirk

    Jómunkásember

    Összeszedtem minden tudásomat (ami nem sok van :) ) és tegnap írtam egy shell scriptet, ami a samba ilyen, elég bőséges logjaiból:

    ...
    [2018/06/22 14:42:18.106095, 2] smbd/close.c:696(close_normal_file)
    CsLev closed file fileserver/__MUNKAK/CSL/21_KM Mech/KM_ID/HELL/HP/KM MAM 2016.xlsx (numopen=6) NT_STATUS_OK
    [2018/06/22 14:42:18.110089, 2] smbd/open.c:746(open_file)
    CsLev opened file fileserver/__MUNKAK/CSL/21_KM Mech/KM_ID/HELL/HP/KM MAM 2017 egész év.xlsx read=No write=No (numopen=7)
    [2018/06/22 14:42:18.114096, 2] smbd/close.c:696(close_normal_file)
    CsLev closed file fileserver/__MUNKAK/CSL/21_KM Mech/KM_ID/HELL/HP/KM MAM 2017 egész év.xlsx (numopen=6) NT_STATUS_OK
    ...

    csinál ilyen, táblázatkezelőbe is betölthető fájlokat:
    2018/06/22 14:42:17.770334 CsLev opened file fileserver/__MUNKAK/CSL/21_KM Mech/KM_ID/HELL/HP/KM MAM 2017 egész év.xlsx
    2018/06/22 14:42:17.824866 CsLev opened file fileserver/__MUNKAK/CSL/21_KM Mech/KM_ID/HELL/HP/Palyazati_Felhivas-18.pdf
    2018/06/22 14:42:17.870417 CsLev opened file fileserver/__MUNKAK/CSL/21_KM Mech/KM_ID/HELL/HP/IA_GAZD_99-1.pdf

    Ezzel a csodával:

    #!/bin/bash
    files=/var/log/samba/*
    tempfile=tmp.log
    tempfile2=tmp2.log
    fact=activity.log
    grepcmd1='-B1'
    grepcmd2='read=Yes|write=Yes'
    grepcmd3='file'

    for f in $files
    do
    if [[ $f = *"log."* ]]; then
    #bizonyos fájlokat eleve nem nézünk meg
    if [[ $f != *".gz"* ]] && [[ $f != *".nmbd"* ]] && [[ $f != *".smbd"* ]]; then
    echo "Processing $f..."
    egrep "$grepcmd1" "$grepcmd2" "$f" > $tempfile2 #kiszedjük a read vagy write soroka$
    awk '!/--/' $tempfile2 > $tempfile #kiszedjük az egrep blokk határoló sorokat
    sed 's/smbd.*e)//' $tempfile > $tempfile2 #a nem releváns szövegrészek törlése
    sed 's/read.*)//' $tempfile2 > $tempfile
    sed 's/, .* //' $tempfile > $tempfile2 #[ , rész törlése
    sed 's/^.//' $tempfile2 > $tempfile #kezdő karakter eltávolítása
    perl -ne 'print unless $seen{$_}++' $tempfile > $tempfile2 #duplikált sorok eltávol$
    egrep "$grepcmd1" "$grepcmd3" "$tempfile2" > $tempfile #a maradékot újra leszűrjük
    awk '!/--/' $tempfile > $tempfile2 #blokkhatár
    paste -d ' ' - - < $tempfile2 > $tempfile #minden második (elsővel kezdve) sor végé$
    cat $tempfile > ${f##*/}.txt #megfelelő névvel elmentjük a végleges szöveget
    else
    echo "Excludeing $f..."
    fi
    else
    echo "Exludeing $f..."
    fi
    done
    rm $tempfile
    rm $tempfile2

    Amit csináltam, az kissé ronda. Oda-vissza írogat két tempfile-t, azokon dolgozom. Lehet, hogy lehetne ezeket memóriában csinálni, arra nem jöttem rá.
    Így is lefut elég hamar a dolog, de biztos van szebb megoldás rá.

    [ Szerkesztve ]

    Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)

Új hozzászólás Aktív témák