mapi4780 10 Geschrieben 3. Dezember 2011 Melden Teilen Geschrieben 3. Dezember 2011 (bearbeitet) Guten Morgen! Ich bräuchte Hilfe bei einem Code-Stückchen. Folgende Situation: Ich habe aus einem Logfile des Mailservers die Daten eines versuchen Angriffs extrahiert. dieses "domain.txt" (file 0) enthält nun nur noch die Domainnamen bei denen der Angriff versucht wurde. Nun habe ich in diesem File aber für jeden Versuch einen Eintrag. domainA domainA .....(noch 7000 mal) domainA domainB domainB ...usw. Ich würde aus diesem txt gerne folgende Infos in ein neues txt übernehmen (file A) domainA (wie oft im file) domainB (wie oft im file) Schritt 2 in einem anderen txt file (file B) habe ich sämtliche domains welche bei mir liegen Diese würde ich gerne mit der erstellten liste oben vergleichen um zu sehen wieviele "meiner domains" gezielt attackiert wurden. Codeidee merke dir wort A in file A ist das nächste wort in file A = dem vorigen zähler +1 ist das nächste wort anders -> schreibe wortA und zählerstand in file B gehe zum nächsten wort Codeidee 2 vergleiche file B (alle meine domains) mit file A zeile 1 in file B in file A vorhanden? -> schreibe "gefunden" hinter den eintrag in beiden textfiles sind die domains wie folgt domain.at domain2.at domain3.de etc... Zu guter Letzt sollte eine Übersicht rauskommen Domain.at - liegt bei mir - xxxxx mal angegriffen Domain.at - liegt bei mir - nicht angegriffen Domain.at - liegt nicht bei mir Es gilt herauszufinden ob es sich um "zufällige" domains gehandelt hat oder ob gezielt vorgegangen wurde. Das Logfile ist ein paar hundert MB groß und es sind doch etliche 10tsd Zeilen Text was das auswerten nicht grad einfach macht. Leider will mir kein wirklich "gangbarer Weg" einfallen das per .bat umzusetzen. Kann mir jemand den notwendigen "Tipp" geben? Danke Edit: Nachtrag: Mein Hauptproblem ist die definition der richtigen for schleife. bzw. den Bedingungen innerhalb der Schleife. wie bekomme ich eine if / else bedingung in eine for schleife? set zaehler=1 (vorkommen des domainnamens) set var=0 (steht dann für den domainname) for /f %%i in (domains1.txt) do ( if %%i==%var% zaehler=%zaehler%+1 else ( echo %zaehler% >>result.txt echo %%i >>result.txt set var=%%i ) führt dazu dass er statt 7654 einträge für die erste domain nur 1300 überträgt und nur mit der zahl eins.. ?? bearbeitet 3. Dezember 2011 von mapi4780 Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 3. Dezember 2011 Melden Teilen Geschrieben 3. Dezember 2011 Hallo Mapi, Darf ich dich mal fragen, warum du zur Lösung dieser Aufgabe eine Technologie aus dem letzten Jahrtausend benützen willst? Im Vergleich zur heutigen Scripting-Technik -sprich Powershell- ist .bat-Programmierung nur noch Masochismus. Ums mal konkret zu zeigen. Der erste Teil deiner Aufgabe ließe sich in PSH zum beispiel so umsetzen: $Path="C:\temp\domains.txt" $words="domain0","domain1","domain2" foreach($word in $words){ $anzahl = (select-string -path $path -pattern "$word").count "$word $anzahl" } herauskommen würde dann etwa Folgendes domain0 651 domain1 7 domain2 4 Mit PSH - kannst du reguläre Ausdrücke benutzen - brauchst du keine Hilfstextdateien für Zwischenergebnisse - findest jede Menge Beispiele im Netz ..... Nicht umsonst sterben .bat und vbs immer mehr aus, wobei .bat/.cmd bereits nahezu tot ist. blub Zitieren Link zu diesem Kommentar
NorbertFe 2.034 Geschrieben 4. Dezember 2011 Melden Teilen Geschrieben 4. Dezember 2011 Ansonsten würde es dafür wahrscheinlich sogar nen Excel tun, oder? ;) Bye Norbert Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 4. Dezember 2011 Melden Teilen Geschrieben 4. Dezember 2011 Moin, oder der Erlkönig, wenn es um effiziente Log-Auswertung geht: Log Parser. Gruß, Nils Zitieren Link zu diesem Kommentar
mapi4780 10 Geschrieben 5. Dezember 2011 Autor Melden Teilen Geschrieben 5. Dezember 2011 Guten Morgen. Danke für Eure Antworten. Kollege hatte am Wochenende mehr Zeit als ich und hat´s fertig umgesetzt und automatisiert. @ blub Da ich Scripte nur alle heilige Zeit mal brauche hänge ich da etwas nach :rolleyes: @Norbert Wie ich das in Excel hinbekommen hätte?! Keinen Schimmer! @Nils Danke, werd ich mir ansehen. Schönen Start in die Woche -close- Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 5. Dezember 2011 Melden Teilen Geschrieben 5. Dezember 2011 Excel: Spezialfilter der Liste ohne Duplikate an andere Stelle kopieren und dann mit =zählenwenn() zählen. Und einen Vergleich gibts auch mit =wenn() oder =verweis() (letzteres, wenn man eine Liste vergleichen möchte). Zitieren Link zu diesem Kommentar
mapi4780 10 Geschrieben 5. Dezember 2011 Autor Melden Teilen Geschrieben 5. Dezember 2011 @ Dukel - danke! Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.