/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
tail - grep og awk..... et lille eventyr
Fra : Lasse Leegaard


Dato : 26-02-02 20:23

[selve problem stillingen står nederst :)]

Jeg har smækket et webcam op og vil gerne se hvem der kigger på det...
Det er et .jpg billede der bliver FTP'et til dunken hvert 3. sekund.
Når folk sidder og kigger på mit cam vil det så skabe en linie i min apache
access-log (det er forresten en redhat 7.x)

Disse linier vil jeg gerne have sakset lidt i så jeg kun får det første ord
(dvs hostnavnet hvis apache har formået at slå det op)

Da jeg gerne vil følge med som tingene sker laver jeg en tail-f på min
access-log
Jeg grepper på webcam (da billedet hedder webcam.jpg) fordi jeg kun lige
gider se på requests til webcam siden
Awk bruger jeg så til at få skrevet det første ord ud

Dermed får jeg denne linie:
tail -f -n 1 access-log | grep webcam | awk '{print $1}'

Det der generer kommer nu:
Når jeg tamper den linie ind og trykker enter sker der ikke en dyt det
første minuts tid. (eller indtil der er kommet 17 entries i loggen)...
Derimod kommer der 17 linier med de sidste 17 addresser der har kigget på
noget der hedder noget med webcam...

Hvis jeg udelader -f i min tail kommer de sidste N linier ud med det
samme...

Jeg håber der er nogen derude der har en god forklaring på hvad det er der
foregår - eller måske en anden og bedre måde at gøre det jeg vil på. :)

*Thank you for your time...*

--
-Lasse-



 
 
Alex Holst (26-02-2002)
Kommentar
Fra : Alex Holst


Dato : 26-02-02 20:45

Lasse Leegaard <Lasse@b.r.a.n.d.b.i.l.dk> wrote:
> Dermed får jeg denne linie:
> tail -f -n 1 access-log | grep webcam | awk '{print $1}'

Undlad "-n 1" delen.


--
I prefer the dark of the night, after midnight and before four-thirty,
when it's more bare, more hollow. http://a.area51.dk/


Lasse Leegaard (26-02-2002)
Kommentar
Fra : Lasse Leegaard


Dato : 26-02-02 20:50

"Alex Holst" <a@area51.dk> wrote in message
news:slrna7npdn.he2.a@C-Tower.Area51.DK...
> Lasse Leegaard <Lasse@b.r.a.n.d.b.i.l.dk> wrote:
> > Dermed får jeg denne linie:
> > tail -f -n 1 access-log | grep webcam | awk '{print $1}'
>
> Undlad "-n 1" delen.

Det giver samme resultat - Det var i øvrigt også det jeg startede med...

--
-Lasse-



Kent Friis (26-02-2002)
Kommentar
Fra : Kent Friis


Dato : 26-02-02 22:51

Den Tue, 26 Feb 2002 20:23:27 +0100 skrev Lasse Leegaard:
>[selve problem stillingen står nederst :)]
>
>Dermed får jeg denne linie:
>tail -f -n 1 access-log | grep webcam | awk '{print $1}'
>
>Det der generer kommer nu:
>Når jeg tamper den linie ind og trykker enter sker der ikke en dyt det
>første minuts tid. (eller indtil der er kommet 17 entries i loggen)...
>Derimod kommer der 17 linier med de sidste 17 addresser der har kigget på
>noget der hedder noget med webcam...

Det er grep der lægger sit input i en buffer. Prøv om det virker uden
grep - hvis det gør, så må det være muligt at skrive ind regexp ind i
dit awk-udtryk.

Mvh
Kent
--
http://www.celebrityshine.com/~kfr/ - to nye tegninger.

Lasse Leegaard (26-02-2002)
Kommentar
Fra : Lasse Leegaard


Dato : 26-02-02 23:23

"Kent Friis" <kfr@fleggaard.dk> wrote in message
news:a5h006$isg$3@sunsite.dk...
>
> Det er grep der lægger sit input i en buffer. Prøv om det virker uden
> grep - hvis det gør, så må det være muligt at skrive ind regexp ind i
> dit awk-udtryk.
*SGU*

tail -f access-log | awk '/webcam/ {print $1}'

virker efter hensigten :)

*pænt tak*

--
-Lasse-



frank damgaard (27-02-2002)
Kommentar
Fra : frank damgaard


Dato : 27-02-02 00:54

Lasse Leegaard <Lasse@b.r.a.n.d.b.i.l.dk> wrote:

> Dermed får jeg denne linie:
> tail -f -n 1 access-log | grep webcam | awk '{print $1}'

> Det der generer kommer nu:
> Når jeg tamper den linie ind og trykker enter sker der ikke en dyt det
> første minuts tid. (eller indtil der er kommet 17 entries i loggen)...
> Derimod kommer der 17 linier med de sidste 17 addresser der har kigget på
> noget der hedder noget med webcam...

> Hvis jeg udelader -f i min tail kommer de sidste N linier ud med det
> samme...

Du kunne bruge:

tail -f -n 1 access-log | awk '/webcam/ {print $1}'

så sparer du en grep process, da awk også har regular expression.

Dit probleme er måske "|" der har en buffer der giver lidt forsinkelse.

Sammenlign evt.

tail -f -n 0 access-log

med

tail -f -n 0 access-log | awk '{print $1}'


I øvrigt kan der være forskel på bash og tcsh ( og andre shells )
Måske "ulimit -p / ulimit -a" kan fortælle hvor stor bufferen er
(i 512 byte blokke)

Dit problem med at /webcam/ også matcher URL's med webcam betyder
at du må finde en bedre regular expression og evt. lave lidt mere awk kode.


--
Frank Damgaard |


Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408879
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste