[Batch/Bash] Zeilenweise txt auslesen und ändern

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von meister1710, 30. Dezember 2008 .

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 30. Dezember 2008
    Zeilenweise txt auslesen und ändern

    Hi Leute, ich wollte mir ein Script schreiben um automatisiert nach Pubs zu scannen. Ich scanne erst mal mit DFind vor und jage dann alles durch KSnoop.
    Nun wollte ich mir ne Batch schreiben, in der ich mehrere Ranges eingebe, die dann automatisch mit dfind gescannt werden und die Ergebnisse dann an KSnoop übergibt und dann nach Pubs weiterscannt.

    Nun folgendes Problem:
    in der dfind.txt steht alles ja etwa so:

    Und ksnoop braucht ja folgende Syntax in der txt:
    Nun will ich, das in der Batch jede Zeile der dfind.txt eingelesen wird. Wenn die Zeile keine IP Adresse ist, soll sie gelöscht werden, wenn es sich um eine IP handelt soll am Ende der IP das ":21" abgeschnitten werden.
    Im idealfall soll alles in eine andere TXT geschrieben werden, die ich dann zum scannen weiterverwenden kann.

    Jemand da ne Idee?

    Das fertige Script werd ich natürlich hier posten. Wenns fertig ist, werd ichs noch modifizieren, damit man das auch auf STRO's zum laufen bringen kann.
     

  2. Anzeige
  3. #2 2. Januar 2009
    AW: Zeilenweise txt auslesen und ändern

    hallo,

    du fragst ja nach einer Idee :), die habe ich. Sowas geht unter Linux Systemen mit sed bzw. awk und Ausgabeumlenkung mit Bordmitteln. Ich gehe aber mal davon aus das du unter Windows das ganze laufen lassen willst. Da kannst du dir dann entweder die einzelnen exe Dateien von sed bzw awk besorgen oder sowas wie cygwin installieren.

    Zur suche ob eine Zeile mit einer IP belegt ist oder nicht und das abschneiden von :21 kann über Reguläre Ausdrücke erledigt werden. Habe da mal ne zeitlnag mit rumgemacht, ist ziemlich mächtig was die Verarbeiung von Text angeht. Lies dich da mal ein und bastel was ;).

    Gruß
     
  4. #3 2. Januar 2009
    AW: Zeilenweise txt auslesen und ändern

    Hi wenn es wirklich ein Batch Script sein muss würde ich dir empfehlen einfach mal nach "batch textdatei öffnen" oder bearbeiten suchen. Ich denke die Befehle wirst du dann finden. Ich selbst kann leider nur ein bisschen Batch. Wenn es aber auch eine andere Sprache sein darf, beispielsweise Pascal (kommt halt ne kleine exe am Ende raus) kann ich das machen oder dir erklären wie das geht. Das erklären ist natürlich für Batch das selbe, also der Algorithmus.

    Code:
    Solange die Datei nicht zu ende ist {
     Zeile einlesen
     wenn erstes zeichen des Strings eine zahl {
     ab dem doppelpunkt alle zeichen bis zum ende abschneiden
     variable in eine neue textdatei schreiben
     }
     wenns nicht automatisch geht in die nächste zeile springen
    }
    Ließe sich halt noch anpassen je nachdem wie gewünscht.

    mfg.
     
  5. #4 2. Januar 2009
    AW: Zeilenweise txt auslesen und ändern

    wenn ich es richtig verstanden hab is es doch recht einfach:

    1. bat mit:
    Code:
    dfind -p 21 127.0.0.1 127.0.0.2
    dfind -p 21 127.0.0.3 127.0.0.4
    dfind -p 21 127.0.0.3 127.0.0.6
    also mehrer scan aufträge in die bat und dann am ende von der bat einfach ksnoop mit syntaxen
    also mit input dfind.txt usw

    mfg Radiergimmy

    /edit:

    wenn du die ips einzeln haben willst machst halt die bat volgendermaßen:
    Code:
    dfind -p 21 ip ip
    ipextract.exe dfind.txt onlyip.txt
    iconv -f ISO-8859-1 -t utf-8 onlyip.txt -o utf8ips.txt
    KSnoop -f utf8ips.txt -o results.txt -p paths.txt -s 32 -t 25 -l 5 -C 10 -F 1000
     
  6. #5 2. Januar 2009
    AW: Zeilenweise txt auslesen und ändern

    Hintergrund der Geswchichte ist, das KSnoop bei mir oft Fehler ausgibt, wenn am Ende noch der Port dranhängt. Auserdem wollte ich später, wenn das automatisierte Script fertig ist noch einbauen, das man auch nach MSSQL, Veritas, etc scannen kann, so das man nur beim Start der Batch die Range(s) eingibt und angibt, wonach gescannt werden soll und der Rest automatisch geht.
    Die Batch selber hab ich schon für die Pubs fast fertig, fehlt nur noch das entfernen der Portsws bzw. des Texts.

    Hab auf ner anderen Page ein Beispiel für so ne realisierung gefunden, werde aber aus der Syntax nicht ganz schlau. Kann mir da vielleicht jemand helfen? Hier die Syntax:

     
  7. #6 2. Januar 2009
    AW: Zeilenweise txt auslesen und ändern

    Hab das glaub mal so gelöst:

    Code:
    FOR /F "tokens=1 delims=:" %%i in (bla.txt) do (echo %%i >> ips.txt)
    liest alles bis zum ":" ein und schreibt das dann in ips.txt
     
  8. #7 2. Januar 2009
    AW: Zeilenweise txt auslesen und ändern

    Genau das, was ich gesucht hab!!!! Danke.
    So sind die Portangaben schonmal raus.
    Jetzt fehlt nur noch, das die Leerzeilen und Zeilen, in denen Text anstatt ner IP steht rausfiltert. Ne Ahnung, wie man das in einem direkten Kontext verwenden könnte?
     

  9. Videos zum Thema
Die Seite wird geladen...