ubuntuusers.de

Korrekte Verwendung von grep

Status: Gelöst | Ubuntu-Version: Server 14.04 (Trusty Tahr)
Antworten |

Muffin72

Anmeldungsdatum:
18. Juni 2012

Beiträge: 190

Mein Subnet wird demnächst umziehen und ich muss daher meinen Homeserver auf die neue IP umstellen. Wie kann ich korrekt mittels grep nach einer bestimmten IP suchen und dabei einen oder mehrere Ordner, hier alle logs - und hier besonders owncloud im Verzeichnis und gemounteten Sicherungsmedien - rekursiv ausschließen, da die Ergebnisse zu umfangreich sind? Ich habe gesehen, dass man mit -I Binaries ausschließen kann, sowas muss es doch auch für einen Pfad geben. Lasse ich es ohne Einschränkung laufen, geht das minutenlang über gefühlt hunderte Seiten, verursacht durch owncloud.

Doc_Symbiosis

Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4453

Wohnort: Göttingen

Hm, gib doch eher andersherum eine Positivliste an Ordnern, die Du durchsuchen möchtest. Die IP sollte ja eigentlich nur in /etc, /opt und /usr/local auftauchen...

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

Ich machs immer so:

grep -ri "1.2.3.4" /etc/*

Nur unter /etc sollten Konfigurationen liegen. /opt und /usr/local kann man mit dazunehmen, dort sollte imho aber nichts zu finden sein.

Muffin72

(Themenstarter)

Anmeldungsdatum:
18. Juni 2012

Beiträge: 190

In der config.php zu owncloud unter /var ist z. B. auch eine ip versteckt, daher dachte ich mir ich scanne alles. Primär wird sicherlich der Großteil unter /etc liegen, aber ich wollte halt auf Nummer sicher gehen, siehe config.php.

Wenn es nicht geht, dann scanne ich eben jedes Verzeichnis einzeln, problematisch ist halt der log Bereich, und der ist auch unter /var.

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

Muffin72 schrieb:

In der config.php zu owncloud unter /var ist z. B. auch eine ip versteckt

Wozu soll die gut sein? Normalerweise kanns dort maximal eine IP für den Datenbankzugriff geben, das ist aber meistens localhost. Ansonsten kann sich Owncloud nicht selbst raussuchen unter welcher IP es läuft, es ist ja kein eigenständiger Dienst, sondern nur eine Applikation, die durch den Webserver bereitgestellt wird.

senden9

Avatar von senden9

Anmeldungsdatum:
8. Februar 2010

Beiträge: 965

Wohnort: Österreich

Ein naiver Ansatz:

1
grep -I -r /irgendwo "12.34.56.78" | grep -v /pfad/den/du/nicht/brauchst

Mit -v suchst du in deinen Ergebnissen vom ersten grep nach Zeilen die den genannten Pfad nicht beinhalten.

Edit: Noch besser: Ich zitiere mal aus der man page von grep:

       --exclude=GLOB
              Skip any command-line file with a name suffix  that  matches  the  pattern  GLOB,  using  wildcard
              matching;  a  name  suffix is either the whole name, or any suffix starting after a / and before a
              +non-/.  When searching recursively, skip any subfile whose base name matches GLOB; the base  name
              is  the  part after the last /.  A pattern can use *, ?, and [...]  as wildcards, and \ to quote a
              wildcard or backslash character literally.

       --exclude-from=FILE
              Skip files whose base name matches any of the file-name  globs  read  from  FILE  (using  wildcard
              matching as described under --exclude).

       --exclude-dir=GLOB
              Skip  any command-line directory with a name suffix that matches the pattern GLOB.  When searching
              recursively, skip any subdirectory whose base name matches GLOB.  Ignore  any  redundant  trailing
              slashes in GLOB.

Muffin72

(Themenstarter)

Anmeldungsdatum:
18. Juni 2012

Beiträge: 190

misterunknown schrieb:

Muffin72 schrieb:

In der config.php zu owncloud unter /var ist z. B. auch eine ip versteckt

Wozu soll die gut sein? Normalerweise kanns dort maximal eine IP für den Datenbankzugriff geben, das ist aber meistens localhost. Ansonsten kann sich Owncloud nicht selbst raussuchen unter welcher IP es läuft, es ist ja kein eigenständiger Dienst, sondern nur eine Applikation, die durch den Webserver bereitgestellt wird.

Ich habe keine Ahnung, vielleicht will man Zugang über unsichere Netze wie einem hotspot vermeiden. Jedenfalls dachte ich mir, wenn da eine IP hinterlegt ist, kann es auch an anderer Stelle hinterlegt sein, und unter trusted domains war eben meine statische IP des Servers hinterlegt.

@senden

Ich werde das mal testen.

Schon mal danke an alle für die Hilfe

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13213

Muffin72 schrieb:

Ich habe gesehen, dass man mit -I Binaries ausschließen kann, sowas muss es doch auch für einen Pfad geben. Lasse ich es ohne Einschränkung laufen, geht das minutenlang über gefühlt hunderte Seiten, verursacht durch owncloud.

Eine Variante ist ja, dass Du erst einmal nur die Dateien ermittelst und dann gezielt nachschaust. Das geht z.B. so:

1
fgrep -rlw 127.0.0.1 ordner

oder auch mit Anzahl der Fundstellen:

1
2
fgrep -rcw 127.0.0.1 ordner
fgrep -rcw 127.0.0.1 ordner | egrep -v ':0$'

Oder Du suchst gleich selektiver mit find:

1
find ordner -type f -iname 'foo*' \! -iname '*.exe' -exec fgrep -w 127.0.0.1 {} +
Antworten |