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

  • Jester01

    veterán

    válasz mkbla #384 üzenetére

    A listexecutables dologra az én megoldásom kb így nézne ki:
    Először egy ciklus a PATH-ban lévő directorykra, azon belül az összes fájlra.
    Fájlonként ellenőrizni, hogy az alábbiak valamelyike teljesül-e:
    - tulajdonos egyezik-e a felhasználóval, és van-e futtatási joga.
    - csoport futtatási jog van, és a felhasználó benne van a csoportban (/etc/group alapján)
    - mindenkinek van rá futtatási joga

    Bekavarhat, ha a PATH-ban relatív útvonal is van (tipikusan a "."). Ez ellen még azt lehet tenni, hogy egy tömbben eltárolni az összes fájlt (miután abszolúttá alakítottad) és az alapján kihagyni a duplákat. Alternatívaként bele lehet tölteni egy sort | uniq csőbe is.

    Az awk script ehhez képest egyszerű. Kell egy tömb ahol felhasználónként összesíted az időket, illetve egy másik, ahol a legutoljára látott bejelentkezési időpontokat tárolod. A sorokon mész szépen végig. Ha login sor jön, akkor azt beírod a bejelentkezős tömbbe. Ha logout sor jön, akkor kiveszed a hozzá tartozó bejelentkezési időt a tömbből és a kiszámított eltelt időt pedig hozzáadod az összesítéshez. A napló végén pedig kiírod az összesített táblázatot.

  • mkbla

    senior tag

    Vizsgaidőszak ide vagy oda, nekem iylen feladatom lenne, nagyon hálás lenneék ha ebben valaki segítséget nyújtana, előre is köszi mindenkitől:
    A script listázzaki abszolútelérésiútvonallal a PATH‐on találhatófile‐ok közülazokat, amelyeketa paraméterben megadott felhasználófuttathat akárt ulajdonosjogán, akár a csoport jogán, akár mindenki másjogán.
    􀁹
    Példa:
    $ echo $PATH
    /usr/local/bin:/usr/bin:/home/h12345
    $ ./listexecutables.sh h654321
    /usr/local/bin/gcc
    /usr/local/bin/mplayer
    /usr/bin/gzip
    /usr/bin/wc
    /home/h12345/listexecutables.sh

    ehhez pl erre godoltam volna de még igy is messze járok szte ma megosátol:

    ls -l | egrep ’^-..x’ - ez az aktuális könyvtárban listázza ki..

    van egy feladat is:

    Írjon AWK scriptet, ami a felhasználók géphasználatát összesíti a rendelkezésre álló log file alapján! Melyik felhasználó hány alkalommal lépett be, és mennyi időt volt bejelentkezve?

    pl: $ cat ./users.log
    user1;login;2009-03-26;10:30
    user2;login;2009-03-26;11:07
    user2;logoff;2009-03-26;12:20
    user1;logoff;2009-03-26;12:00
    user3;login;2009-03-26;16:53
    user3;logoff;2009-03-26;19:54
    user1;login;2009-03-26;20:11
    user1;logoff;2009-03-26;21:32

    $ ./userstat.awk ./users.log output:
    user1: 2 alkalom, 2 óra 51 perc
    user2: 1 alkalom, 1 óra 13 perc
    user3: 1 alkalom, 3 óra 1 perc

    valaki vmi 5let?

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