timebandit said:
> H�ller p� att f�rs�ka ta ut alla IP's fr��n auth.log och har lyckats
> g�ra det med raden "Failed password for illegal" men inte med den andra
> raden d� dem �r s� lika i b�rjan :(
> �r det n�gon som vet hur man kan ta ut allt efter ordet "from" till en
> fil? Detta skulle underl�tta f�r mig r�tt mycket...
>
>
> Feb 4 20:18:03 DZN sshd[8877]: Failed password for root from
> 200.53.114.42 port 4134 ssh2
> Feb 4 20:18:08 DZN sshd[8881]: Failed password for illegal user test from
> 200.53.114.42 port 4231 ssh2
De verktyg jag brukar anv�nda f�r detta �r sed, awk, cut, och ev. perl.
Eftersom det �r olika position p� ip-adressen beroende p� om anv�ndaren
existerar eller inte ("illegal user" vs "root") s� blir det lite mer
komplicerat, annars kunde du anv�nt
grep 'Failed password' /var/log/auth.log | awk '{ print $10 }'
Eller motsvarande med 'cut', | cut -f 12 -d ' '
Ist�llet skulle jag anv�nda sed, med (s)ubstitutefunktionen.
grep ... | sed 's/.* from //'
tar d� enkelt bort allting i b�rjan p� raden (ers�tt det som matchar med
tom str�ng). Sortera detta sedan med | sort.
F�r att f� ut enbart ip-adressen s� blir matchningen lite mer komplex;
grep ... | sed 's/.* from \([^ ]*\) .*/\1/'
h�r matchas adressen som en str�ng utan mellanslag, och "sparas" med hj�lp
av paranteserna. Hela raden byts sedan ut mot detta machade uttryck med
hj�lp av bak�treferensen \1, dvs adressen du vill ha ut. Sortera med |
sort som tidigare, och eventuellt | uniq om du vill ha bort dubletter.
Allts�:
grep 'Failed password' /var/log/auth.log | sed 's/.* from \([^ ]*\)
.*/\1/' | sort | uniq > /tmp/adresser.txt
Vill du sedan f� fram namnen p� adresserna i fr�ga:
for x in `cat /tmp/adresser.txt` ; do host $x | awk '{print $5}' ; done
Mvh,
Stefan
Karlstads unixf�rening | KUF
http://www.karlstadunix.nu | [EMAIL PROTECTED]
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]