← Back to team overview

sslug-teknik team mailing list archive

Re: bash - grep og regular expression

 

Mogens Melander skrev:

Dagens opgave går ud på, i bash-script, at trække ip-adressen ud af følgende
log entries.

Mar 19 12:45:48 styx sshd[19796]: Failed password for illegal user newsroom
from 213.133.99.19 port 33561 ssh2
Mar 19 12:45:48 styx sshd[19797]: Illegal user brian from 213.133.99.19

Regulære udtryk har aldrig været min stærke side, og jeg har en klar
fornemmelse af at denne opgave løses bedst af sådanne. Jeg kan klare
det med en kombination af grep|cut, men er overbevist om at det kan
klares enklere/mere elegant med det rette udtryk.

du kan f.eks. bruge awk eller perl der begge har regular expressions og kan manipulere med data. Jeg foretrækker "gawk" til simple tekst-ind og tekst-ud opgaver.

/: Failed password for illegal user newsroom from/ { # forhåbentlig nok match, ellers må tilføjes lidt mere
 print $13;  # udnyt at det er 13. felt (adskilt af blanktegn)
 next;
}
/: Illegal user brian from/ {
 print $10; # her er det 10. felt
 next;
}

Erstart "newsromm" og "brian" med [^[:space:]]+ hvis det ikke er specifik de "user" du vil matche. (evt. [[:alnum]]+ hvis du ved user kun kan være bogstaver og cifre)






References