dostal som zaulohu naprogramovat skript, v ktorom vypisem za pomoci prikazu last, zoznam uzivatelov ktory sa do systemu hlasia v nocnych hodinach, tj.: v case medzi 22:00 a 05:00, format vypisi je uzivatel, pocet prihlaseni, a pocet posledneho NOCNEHO(cize datumovo najnovsieho) prihlasenia do systemu, rata sa iba s ukoncenymi relaciami...musim to byt shell(csh alebo bash), nie perl
...riesim to na freebsd
....trapim sa s tym v bashi uz cele tri dni po sebe, pri 10000 riadkovom vystupe z last mi ten skript bezi 7 minut aj viac uz naozaj neviem ako to mam dalej optimalizovat
...vie mi neikto poradit ako nato efektivne? ak je to nevyhnutne tak aj za pouzitia (g)awk
-------------------------------------------------------------------------------------------------
moj postup, zatial mam iba toto ale uz teraz skript trva velmi dlho:
zoznam1 = last -> vygrepujem vsetky ukoncene spojenia, vynecam usera reboot a posledne dva riadky vo vystupe last(prazdny a wtmp begins...), odstranim prebytocne medzerty, vyjmem potrebne stlpce
zoznam2 = last -> ustriedeny zoznam uzivatelov zo zoznam1, kazdy user iba jedenkra
pre kazdeho usera za zoznam2 rob toto:
-- vygrepuj vsetky zaznam zo zoznam1 pre daneho usera, dostanem tak zoznam casovo usporiadany z last prikazu, najprv najnovsie prihlasenie potom najstarsie
-- vsetky ich prejdem riadok po riadku a osetrim riadky na ktorych chyba nazov hosta, tj.: indexi stlpcov su tam posunute
-- cas v tvare "hod:min" trnsformujem na cislo "hodmin", bez bodkociarky
==> tu nastava problem, v cykle for, prikaz
cas_cislo=`echo "$cas_retazec" | tr -d ':'`
privelmi spomaluje skript pre 10000 zaznamov, z 4min. skriptu sa tymto riadkom stava 7 min. skript
-- porovnam s casom aktualneho riadka, ak je to nocne prihlasenie tak to vypisem na terminal