www.bimminger.at

Tipps / Linux

Linux

In Log Files Informationen finden


Eigentlich wollte ich aus einem Zugriffslog auf der bash nur herausfinden mit welchen IP-Adressen zugegriffen wurde. In der relativ langen Text-Log-Datei, wurden einfach nur alle Zugriffe auf eine Administrationsumgebung protokolliert. Eine Zeile mit der IP und den Zugriffsdaten und dann einige Zeilen mit Parametern.

Nach kurzem probieren auf der Konsole hab ich wieder mal einige Dinge für mich herausgefunden. Hier der Weg wie ich zu meiner Befehlszeile gekommen bin, um die Information herauszufinden, die ich sehen wollte.

Mit grep alle Zeilen mit IP Adressen finden


Dazu hab ich einfach den Inhalt der Datei "log" mit cat ausgegeben und einen simplen regulären Ausdruck verwendet.

cat log | grep -e "\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}"

Jetzt hatte ich aber das Problem, dass ich mit der am Server installierten grep-Version kein "show only matches" zur Verfügung hatte. Ich wollte aber nur alle IP-Adressen wissen, die auf die Adminumgebung zugegriffen haben. Also mußte ich nach einem anderen Weg suchen.

Zeilen splitten/teilen mit cut


In meinem Fall waren die unterschiedlichen protokollierten Zugriffswerte durch "-" getrennt. Dadurch konnte ich mir aus allen Zeilen mit den IPs das 2. Feld (eben die IP-Adresse) mit cut herausfiltern. Mit cut kann man einfach Zeilen anhand von bestimmten Trennzeichen (Delimetern) wie Leerzeichen, Strichpunkte, etc. teilen.

cut -d"-" -f2


So aber jetzt war es immer noch eine sehr lange Liste mit den IP-Adressen aller Zugriffe. Ich wollte aber wirklich nur eine Liste der unterschiedlichen IP-Adressen. Also weiter ...

Gleiche Zeilen ermitteln mit sort


So der letzte Schritt war aus den ermittelten IP-Adressen eine Liste aller unterschiedlichen IP-Adressen zu erstellen. Der Befehl unique war leider auf meinem System nicht vorhanden darum habe ich nach einer Alternative gesucht. Dazu hab ich dann einfach das unique-Attribut von sort verwendet. Damit ist es möglich alle Gleichen Zeilen zusammenzufassen bzw. zu ermitteln.

sort -u

Zusammenfassend


Also die Kombination aller Befehle hat mir innerhalb kürzester Zeit alle IP-Adressen gelistet, die jemals zugegriffen haben:

cat log | grep -e "\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}" | cut -d"-" -f2 | sort -u

Schaut doch schön aus oder?

Wer will kann natürlich auch noch ein Ranking daraus machen und das sort -u einfach durch sort | uniq -c | sort -r -n ersetzen.


Linux Einführung / Uni Münster

Diese Seite hat mir bei meiner Ideenfindung stark geholfen. Hier liegt einfach eine nette Zusammenfassung von mehreren Befehlen auf der Linux-Konsole.




Um einen Diskussionsbeitrag zu posten müssen Sie eingeloggt sein.