bash programmeringshjälp?
Hallå igen Säkert inte rätt ställe å fråga detta på men men... 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 Tack på förhand,
Re: bash programmeringshjälp?
timebandit wrote: Ä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 Hej! Jag antar att nedanstående är ungefär vad du är ute efter. # grep Failed password for /var/log/auth.log | sed 's/ from /#/' | cut -d # -f 2 | cut -d -f1 | sort -u mvh /Martin Leben -- Remove dashes and numbers (if any) to get my real email address. I subscribe to the mailing lists i write to. Please don't CC me on replies. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: bash programmeringshjälp?
Quoting timebandit [EMAIL PROTECTED]: 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... Denna hjälper nog dig att lösa problemet: echo Feb 4 20:18:03 DZN sshd[8877]: Failed password for root from 200.53.114.42 port 4134 ssh2 | rev | awk '{print $4}' | rev Dvs, du använder det sista som står efter echo biten. Hoppas det hjälper dig :-) För mer info, kolla på dessa manualerna: man rev man awk Hälsningar, -- .''`. Torbjörn Svensson, azoff (at) se (dot) linux (dot) org : :' : 7EB9 2DC5 61AE DAB5 7099 BAC6 798E E39A DBDB 0CFD `. `' http://azoff.homeip.net/ | http://azoff.tty0.org `-- http://www.se.linux.org This message was sent using IMP, the Internet Messaging Program. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: bash programmeringshjälp?
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]