Microsoft MVPs inside





 MCSEboard.de – IT Pro Forum zu Windows Server 2008 R2 / 2008 / 2003 & Windows 7 / Vista / XP
Registrieren Hilfe Regeln Benutzerliste Suchen Heutige Beiträge Alle Foren als gelesen markieren

Windows Forum — Scripting


Alles zum Thema System Administration Scripting — Q & A zum Thema Scripting: Batch, VBS, WMI, PowerShell


Antwort
     
Themen-Optionen
Alt 03.12.2011, 09:35   #1
Newbie
 
Offline
Registriert seit: 11-2011
Beiträge: 22
.bat wörter zählen und vergleichen

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.. ??

Geändert von mapi4780 (03.12.2011 um 15:25 Uhr).
    Mit Zitat antworten
Alt 04.12.2011, 00:31   #2
Moderator
 
Offline
Registriert seit: 11-2002
Beiträge: 6.666
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:

Code:
$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

Code:
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

Signatur
www.powershellpraxis.de

Nec Cupias, Nec Metuas

    Mit Zitat antworten
Alt 04.12.2011, 12:58   #3
Expert Member
 
Benutzerbild von NorbertFe
 
Online
Registriert seit: 07-2007
Beiträge: 15.999
Ansonsten würde es dafür wahrscheinlich sogar nen Excel tun, oder?

Bye
Norbert

Signatur
Frank, I never thought I'd say this again. I'm getting the pig!

    Mit Zitat antworten
Alt 04.12.2011, 17:15   #4
Expert Member
 
Benutzerbild von NilsK
 
Offline
Registriert seit: 06-2008
Ort: Hannover
Beiträge: 7.376
Moin,

oder der Erlkönig, wenn es um effiziente Log-Auswertung geht: Log Parser.

Gruß, Nils

Signatur
Nils Kaczenski

MVP Directory Services: Architecture
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!

    Mit Zitat antworten
Alt 05.12.2011, 08:25   #5
Newbie
 
Offline
Registriert seit: 11-2011
Beiträge: 22
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

@Norbert
Wie ich das in Excel hinbekommen hätte?! Keinen Schimmer!

@Nils
Danke, werd ich mir ansehen.

Schönen Start in die Woche

-close-
    Mit Zitat antworten
Alt 05.12.2011, 08:29   #6
Board Veteran
 
Offline
Registriert seit: 12-2008
Beiträge: 4.674
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).
    Mit Zitat antworten
Alt 05.12.2011, 09:01   #7
Newbie
 
Offline
Registriert seit: 11-2011
Beiträge: 22
@ Dukel - danke!
    Mit Zitat antworten
Antwort


Themen-Optionen


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
EXCH - EMails zählen TruckerTom MS Exchange Forum 7 11.05.2009 17:35
Word: Aus/Einschalten der Wörter, die man vor einiger Zeit dort geändert hat Gunnar-hro Off Topic 1 22.03.2007 21:04
Zustände Vergleichen - System Hard-/Software Vergleichen bummie Windows Forum — Allgemein 0 27.11.2006 12:32
Word 2003 Wörter übersetzen ginka Windows Forum — Allgemein 0 11.04.2006 14:50
IIS Zugriffe zählen Milla Windows Server Forum 5 08.12.2004 14:28


Alle Zeitangaben in MEZ/CET. Es ist jetzt 15:05 Uhr. Seite generiert in 0,037 Sekunden.

- Unsere Partner -

Copyright © 2000 – 2012 MCSEboard.de

Sprung zum Seitenanfang