/ 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
unik cat/grep?
Fra : CykelSmeden fra Aalb~


Dato : 07-04-02 08:56

er der en script-nørd som kan hjælpem mig med at få en unik liste fra nogle
logs?

cat error_log|grep system32 > nimda.log

giver en fin fil med alle nimdaangreb. Der er bare mange fra samme
ipadresser, så jeg vil gerne have en liste med kun 1 entry for hver IP.

det er iøvrigt rar læsning (når ens server er linux)

hilsen finn



--
--- CykelSmeden.... edb på gadeplan

Hvis intet er anført, taler jeg om RH 7.1
og når jeg spørger, er det bare fordi jeg ved for lidt!



 
 
Klaus Alexander Seis~ (07-04-2002)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 07-04-02 09:12

CykelSmeden fra Aalborg skrev:

> er der en script-nørd som kan hjælpem mig med at få en unik
> liste fra nogle logs?
>
> cat error_log|grep system32 > nimda.log
>
> giver en fin fil med alle nimdaangreb. Der er bare mange fra
> samme ipadresser, så jeg vil gerne have en liste med kun 1
> entry for hver IP.

Du bliver nødt til at vise os nogle log-linjer, så vi kan se hvad
der skal til for kun at gemme unikke IP-adresser, for det er vel
næppe nok med "sort < error_log | uniq".


// Klaus

--
><>    vandag, môre, altyd saam

CykelSmeden fra Aalb~ (07-04-2002)
Kommentar
Fra : CykelSmeden fra Aalb~


Dato : 07-04-02 09:43

"Klaus Alexander Seistrup" <jakabov119@magnetic-ink.dk> skrev i en
meddelelse news:jakabov+daf00a88-3d22-4af5-a642-d65a68db5391@news.szn.dk...
> CykelSmeden fra Aalborg skrev:

> > giver en fin fil med alle nimdaangreb. Der er bare mange fra
> > samme ipadresser, så jeg vil gerne have en liste med kun 1
> > entry for hver IP.
>
> Du bliver nødt til at vise os nogle log-linjer, så vi kan se hvad
> der skal til for kun at gemme unikke IP-adresser, for det er vel
> næppe nok med "sort < error_log | uniq".
>
efterfølgende eks. var hvad jeg har eksperimenteret med, hvor ipadressen
står i pos 43, Men det er sikkert nemmere hvis jeg får loggen omdefineret
som min anden server, hvor IPadressen kommer først. (det havde jeg iøvrigt
ikke lagt mærke til)

finn

--------snip logeks.
[Tue Jan 22 04:52:49 2002] [error] [client 202.98.82.75] File does not
exist: /var/www/Kalender/scripts/$
[Tue Jan 22 04:52:53 2002] [error] [client 202.98.82.75] File does not
exist: /var/www/Kalender/MSADC/ro$
[Wed Jan 23 01:58:26 2002] [error] [client 195.16.35.226] File does not
exist: /var/www/Kalender/scripts$
[Wed Jan 23 01:58:26 2002] [error] [client 195.16.35.226] File does not
exist: /var/www/Kalender/MSADC/r$
[Thu Jan 24 18:04:26 2002] [error] [client 202.107.136.30] File does not
exist: /var/www/Kalender/script$
[Thu Jan 24 18:04:29 2002] [error] [client 202.107.136.30] File does not
exist: /var/www/Kalender/MSADC/$
[Fri Jan 25 06:52:11 2002] [error] [client 195.117.57.1] File does not
exist: /var/www/Kalender/scripts/$
[Fri Jan 25 06:52:11 2002] [error] [client 195.117.57.1] File does not
exist: /var/www/Kalender/MSADC/ro$
[Sat Jan 26 10:36:32 2002] [error] [client 195.192.23.73] File does not
exist: /var/www/Kalender/scripts$
[Sat Jan 26 10:36:32 2002] [error] [client 195.192.23.73] File does not
exist: /var/www/Kalender/MSADC/r$
[Sat Jan 26 11:09:07 2002] [error] [client 195.192.23.73] File does not
exist: /var/www/Kalender/MSADC/r$



Niels Andersen (07-04-2002)
Kommentar
Fra : Niels Andersen


Dato : 07-04-02 09:18

CykelSmeden fra Aalborg wrote in
<3caffb82$0$78749$edfadb0f@dspool01.news.tele.dk>:

> cat error_log|grep system32 > nimda.log

Hvis ikke dette er et simplificeret eksempel, så har du gjort dig fortjent
til "Useless Use of Cat Award". :)

Frit oversat:
____

Husk, i næsten alle tilfælle hvor du har:

cat fil | en_kommando og dens argumenter ...

kan skrives som:

<fil en_kommando og dens argumenter ...

og i nogle tilfælle, som denne, kan du flytte filnavnet til argument-listen
sådan her:

en_kommando og dens argumenter ... file
____

Så altså, det kan omskrives til:

grep system32 error_log > nimda.log

> giver en fin fil med alle nimdaangreb. Der er bare mange fra samme
> ipadresser, så jeg vil gerne have en liste med kun 1 entry for hver IP.

Well, i teorien kunne du køre den igennem "uniq":

grep system32 error_log | uniq > nimda.log

Men der står sikkert dato med, og så er linjerne jo egentlig forskellige
alligevel.
Hvis du kun vil have ip-adressen, kan du hive den ud først. Alternativt kan
du hive datoen ud, men så er der stadig risiko for at andet ligegyldigt
data er forskelligt.

Vælg hvad du vil gøre, og vis et par linjer. Så kan vi se hvad der skal
til, for at hive det relevante ud af linjerne.

--
Mvh.

Niels Andersen
Linux 2.4.18 - Debian 3.0


Henrik Boegh (07-04-2002)
Kommentar
Fra : Henrik Boegh


Dato : 07-04-02 09:40

CykelSmeden fra Aalborg told the rest of dk.edb.system.unix:

> er der en script-nørd som kan hjælpem mig med at få en unik liste fra
> nogle logs?
>
> cat error_log|grep system32 > nimda.log
>
> giver en fin fil med alle nimdaangreb. Der er bare mange fra samme
> ipadresser, så jeg vil gerne have en liste med kun 1 entry for hver
> IP.
>
> det er iøvrigt rar læsning (når ens server er linux)

grep 'system32' error_log | awk '{print $1}' | uniq

$1 skal muligvis erstattes med den "plads" som ip-adressen har i din
logfil. $1 er første "ord", $2 andet o.s.v.

> hilsen finn

--
H e n r i k B o e g h ^ http://henrik.boegh.net/?index=usenet
"Historikeren er en profet med blikke bagud."
-- Friedrich von Schlegel


Peter Makholm (07-04-2002)
Kommentar
Fra : Peter Makholm


Dato : 07-04-02 10:39

Henrik Boegh <henrik@boegh.X_net> writes:

[Og Niels Andersen skriver noget tilsvarende:]

> grep 'system32' error_log | awk '{print $1}' | uniq

uniq(1) fjerner kun identiske linjer hvis de følger ummidelbart efter
hinanden. Altså:

xyzzy% echo "foo\nfoo\nbar\nfoo" | uniq
foo
bar
foo
xyzzy%

Man skal derfor næsten altid sørger for at inddata til uniq er
sorteret på forhånd eller bruge 'sort -u' istedet.

--
Emacs er det eneste moderne styresystem der ikke er multitrådet.

Martin Moller Peders~ (07-04-2002)
Kommentar
Fra : Martin Moller Peders~


Dato : 07-04-02 13:21

In <87sn67svac.fsf@xyzzy.adsl.dk> Peter Makholm <peter@makholm.net> writes:

>Henrik Boegh <henrik@boegh.X_net> writes:

>[Og Niels Andersen skriver noget tilsvarende:]

>> grep 'system32' error_log | awk '{print $1}' | uniq

>uniq(1) fjerner kun identiske linjer hvis de følger ummidelbart efter
>hinanden. Altså:

>xyzzy% echo "foo\nfoo\nbar\nfoo" | uniq
>foo
>bar
>foo
>xyzzy%

>Man skal derfor næsten altid sørger for at inddata til uniq er
>sorteret på forhånd eller bruge 'sort -u' istedet.

Bemaerk at
sort | uniq
og
sort -u
ikke giver samme output.

/Martin


Adam Sjøgren (07-04-2002)
Kommentar
Fra : Adam Sjøgren


Dato : 07-04-02 13:44

On Sun, 7 Apr 2002 12:20:49 +0000 (UTC), Martin Moller Pedersen wrote:

> Bemaerk at sort | uniq og sort -u ikke giver samme output.

Og så bliver jeg jo nød til at spørge hvad forskellen er...?


Mvh.

--
"Ett, två, tre, pang på rödbetan." Adam Sjøgren
asjo@koldfront.dk

Claus Rasmussen (07-04-2002)
Kommentar
Fra : Claus Rasmussen


Dato : 07-04-02 09:44

CykelSmeden fra Aalborg wrote:

> er der en script-nørd som kan hjælpem mig med at få en unik liste fra
> nogle logs?

Hmmm "script-nørd". Det må vist være mig


> cat error_log|grep system32 > nimda.log
>
> giver en fin fil med alle nimdaangreb. Der er bare mange fra samme
> ipadresser, så jeg vil gerne have en liste med kun 1 entry for hver IP.

Så skal du først have pillet ip-adressen ud af linien som du derefter
sorterer på med 'sort -u' så duplikater kun kommer ud een gang:

grep system32 < /var/log/httpd/error_log \
| while read line
do set -- $line
echo $8
done \
| sort -u

'set -- $line' sætter de positionelle paramtetre til de whitespace separe-
rede felter i $line. Ip-adressen ligger i det ottende felt og skrives ud
med 'echo $8' som pipes videre til vores sort kommando.

Når du kører programmet får du et ekstra ']' i halen på hver ip-adresse.
Det kan du fjerne ved at bruge 'echo ${8%]}' i stedet for blot 'echo $8'.

Nogen vil måske anbefale 'cut' i stedet for tricket med while-loopet, men
cut opfatter to skilletegn i træk (f.eks ' ' - altså to blanke) som et
ekstra felt).


> det er iøvrigt rar læsning (når ens server er linux)

hehe

-Claus


CykelSmeden fra Aalb~ (07-04-2002)
Kommentar
Fra : CykelSmeden fra Aalb~


Dato : 07-04-02 10:08


Tusind tak til jer alle for gode forståelige svar. Nu har jeg fået nogle
spændende input til selv at få resten til at køre.

Iøvrigt kan Henrik lige hilse det gamle bøgetræ. (det står forhåbentligt
endnu

finn



Søg
Reklame
Statistik
Spørgsmål : 177511
Tips : 31968
Nyheder : 719565
Indlæg : 6408598
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste