Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Tcpdump / awk

  1. #1
    Registrierter Benutzer
    Registriert seit
    Aug 2001
    Beiträge
    20

    Tcpdump / awk

    Guten Morgen!

    Ich habe ein Problem mit dem Ausführen eines Script welches eigentlich immer gelaufen ist und jetzt nach einem Systemwechsel nicht mehr will.

    Per TCPDUMP greife ich die Ethernet-Schnittstelle an Port 9201 ab und lese damit Daten eines Datalogger aus, welcher mir in unterschiedlichen Abständen Datensätze senden.

    Per Script analysiere ich diese und schreibe sie in eine Datei.

    Die Daten kommen wie folgt daher:

    E.....@...........X...#.....#STA:000001,821;L:146; TM:840405013001;D:2;T:01;C:52;A01:3.417;A02:6.500; A03:185.5;A04:0.700;A05:0.900;A06:355.0;A07:183.4; K01:10000000000;O01:0000;11;#

    Script zum Zerlegen und Speichern:

    #!/bin/bash

    tcpdump -l -A -i eth0 '(port 9201)' -n -q -e | grep --line-buffered STA | awk -F 'STA:' '{print $NF}' | awk -F "[;]" {'print substr($7,5)";"substr($8,5)";"substr($9,5)";"subst r($10,5)";"substr($11,5)";"substr($12,5)";"substr( $13,5)'} | awk '{ print strftime("%d.%m.%Y"";""%H:%M:%S"";"), $0; fflush(); }'>> /volume1/smartlogger/log.txt



    Der Output ist beispielsweise so: 23.11.2018;22:55:17; 3.417;2.375;356.3;0.300;0.500;354.0;355.6

    Zum Testen habe ich folgendes probiert:

    Ich sende per Echo eine Nachricht und lasse sie durch awk aufbereiten und speichern. Das funktioniert in der Kommandozeile

    echo "E.....@...........X...#.....#STA:000001,821;L:146 ;TM:840405013001;D:2;T:01;C:52;A01:3.417;A02:6.500 ;A03:185.5;A04:0.700;A05:0.900;A06:355.0;A07:183.4 ;K01:10000000000;O01:0000;11;#"

    grep --line-buffered STA | awk -F 'STA:' '{print $NF}' | awk -F "[;]" {'print substr($7,5)";"substr($8,5)";"substr($9,5)";"subst r($10,5)";"substr($11,5)";"substr($12,5)";"substr( $13,5)'} | awk '{ print strftime("%d.%m.%Y"";""%H:%M:%S"";"), $0; fflush(); }'>> /volume1/smartlogger/log.txt



    Führe ich aber das Script aus (also nicht in der Kommandozeile), so ist die Datei immer leer.
    Ich habe nun das Script so abgeändert, dass nur mehr folgendes beinhaltet war. Das funktioniert wieder:


    #!/bin/bash
    tcpdump -l -A -i eth0 '(port 9201)' -n -q -e | grep --line-buffered STA >> /volume1/smartlogger/log.txt



    Daher liegt das Problem beim awk, was nicht richtig ausgeführt wird, wenn es nicht direkt in der Komandozeile ausgeführt wird.

    Wo liegt da das Problem?

  2. #2
    Registrierter Benutzer
    Registriert seit
    Aug 2001
    Beiträge
    20
    auch ein wechsle der Anführungszeichen bei AWK von ' auf " brachte nichts
    Geändert von trmax (25.11.18 um 12:29 Uhr)

  3. #3
    Registrierter Benutzer
    Registriert seit
    Aug 2001
    Beiträge
    20
    Update:

    Wenn ich das TeilScript
    #!/bin/bash

    tcpdump -l -A -i eth0 '(port 9201)' -n -q -e | grep --line-buffered STA | awk -F 'STA:' '{print $NF}'

    starte und die Ausgabe nicht in eine Datei umleite wird der Ausdruck wird richtig aufgelöst und im Terminal angezeigt!
    Geändert von trmax (25.11.18 um 12:57 Uhr)

  4. #4
    Registrierter Benutzer Avatar von snowcrash23
    Registriert seit
    Jun 2006
    Ort
    Unbekannt Verzogen
    Beiträge
    577
    Moin trmax.
    Ich kann nicht direkt erkennen wo hier das Problem ist, du könntest aber einmal versuchen den awk-code in ein eigenes Script zu packe anstatt awk dreimal hintereinander aufzurufen:

    Code:
    myscript.awk
    #!/usr/bin/awk -f
    # please edit me!
    
    BEGIN { 
            /STA:/ 
            FS=";"
    }
    {
            print strftime("%d.%m.%Y;%H.%M.%S")";"substr($7,5)";"substr($8,5)";"substr($9,5)";"substr($10,5)";"substr($11,5)";"substr($12,5)";"substr($13,5)
    }
    Code:
    echo "E.....@...........X...#.....#STA:000001,821;L:146 ;TM:840405013001;D:2;T:01;C:52;A01:3.417;A02:6.500 ;A03:185.5;A04:0.700;A05:0.900;A06:355.0;A07:183.4 ;K01:10000000000;O01:0000;11;#" | awk -f myscript.awk >> log.txt
    Ist leichter zu debuggen denke ich.

    MfG
    snwcrash23
    OS:Arch LinuxCPU:Core i5-2500K
    MB:P8P67PRORAM:16GB DDR3GK:NV GTX570

    Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn

Ähnliche Themen

  1. tcpdump
    Von Junktyz im Forum Linux als Server
    Antworten: 2
    Letzter Beitrag: 08.02.07, 12:03
  2. tcpdump
    Von herr_davis im Forum Router und Netzaufbau
    Antworten: 1
    Letzter Beitrag: 31.05.05, 17:21
  3. tcpdump
    Von Jakez im Forum Anbindung an die Aussenwelt
    Antworten: 1
    Letzter Beitrag: 11.07.03, 10:42
  4. tcpdump
    Von emil123 im Forum Linux in heterogenen Netzen
    Antworten: 2
    Letzter Beitrag: 08.07.03, 13:04
  5. tcpdump
    Von Firew im Forum Linux als Server
    Antworten: 2
    Letzter Beitrag: 17.04.01, 09:07

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •