silenzer
Goto Top

FreeBSD sockstat ausgabe in .csv datei in mehr als einer Spalte

Hallo Zusammen,

ich bin neu im Thema FreeBSD und googlen hat mich leider nicht auf mein gewünschtes Ergebnis gebracht, daher hoffe ich hier hilfe zu erhalten:

Folgende Thematik: Ich möchte das Ergebnis meines sockstat -4 in einer .csv Datei festhalten. sockstat -4 > ergebnis.csv macht dies auch. Leider ohne vernünftige Formatierung. Er schreibt leider alles in die erste Spalte, so dass man nicht wirklich eine übersicht erhält und die Liste z.B. nach USER'n nicht sortierbar ist.

Stundenlanges googlen hat mich irgendwann bis zu folgendem gebracht:

sockstat -4 |awk 'BEGIN {FS="[ :/]"; OFS=","} $1 == "tcp" {x=$8; y=$9} $1 == "udp" {x=""; y=$8}{print $4,$1,$5,$6,$7,x,y}'

Leider mit dem selben, nicht nutzbaren ergebnis.

Hat von euch jemand einen Tipp wie man das lösen kann? Ein Einzeiler wäre mir am liebsten face-smile

Gruß

SilenZer

Content-ID: 1388661451

Url: https://administrator.de/contentid/1388661451

Ausgedruckt am: 22.11.2024 um 09:11 Uhr

erikro
erikro 14.10.2021 um 19:11:31 Uhr
Goto Top
Moin,

hilfreich wäre eine Probe der Ausgabe und ein Beispiel für das Ziel.

Liebe Grüße

Erik
SilenZer
SilenZer 15.10.2021 um 08:53:52 Uhr
Goto Top
USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
root python3.6 693 26 tcp4 192.168.21.55:43602 192.168.21.54:4505
_ntp ntpd 674 6 udp4 192.168.21.55:48448 192.168.21.53:123


Hier mal ein Beispiel was auf der Console erscheint.

Wenn ich dies nun kopiere oder automatisiert in eine CSV schreiben lasse, knallt er eine komplette Zeile in genau eine Zelle.
erikro
erikro 15.10.2021 um 09:02:46 Uhr
Goto Top
Zitat von @SilenZer:

USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
root python3.6 693 26 tcp4 192.168.21.55:43602 192.168.21.54:4505
_ntp ntpd 674 6 udp4 192.168.21.55:48448 192.168.21.53:123


Hier mal ein Beispiel was auf der Console erscheint.

Wenn ich dies nun kopiere oder automatisiert in eine CSV schreiben lasse, knallt er eine komplette Zeile in genau eine Zelle.

Und wie hättest Du es gerne?
SilenZer
SilenZer 15.10.2021 um 09:20:37 Uhr
Goto Top
Jede Ausgabe in eine separate Zelle. 7 Zellen je Zeile
erikro
erikro 15.10.2021 um 11:08:20 Uhr
Goto Top
Moin,

sockstat -4 | sed "s/ /;/g" | sed "s/;Address/ Address/g"   

Sollten da mehr als ein Leerzeichen zwischen den Feldern sein, dann

sockstat -4 | sed "s/ \+/;/g" | sed "s/;Address/ Address/g"  

hth

Erik
SilenZer
SilenZer 15.10.2021 um 11:30:05 Uhr
Goto Top
Hey,

die ausgabe sieht nun so aus:

USER;;;;;COMMAND;;;;PID;;;FD;PROTO;;LOCAL;ADDRESS;;;;;;;;;FOREIGN;ADDRESS;;;;;;
root;;;;;python3.7;;29953;26;tcp4;;;192.168.21.103:18862;;192.168.21.51:4505
root;;;;;sendmail;;;6299;;4;;tcp4;;;192.168.21.159:25;;;;;*:*

Ich mach es jetzt über den umweg die datei als .txt rauszuschreiben und dann z.b. in EXCEL zu importieren. Da komm ich dann zumindest auf das gewünschte Ergebnis ohne alles von Hand formatieren zu müssen.
erikro
Lösung erikro 15.10.2021 um 11:36:24 Uhr
Goto Top
Zitat von @SilenZer:

Hey,

die ausgabe sieht nun so aus:

USER;;;;;COMMAND;;;;PID;;;FD;PROTO;;LOCAL;ADDRESS;;;;;;;;;FOREIGN;ADDRESS;;;;;;
> root;;;;;python3.7;;29953;26;tcp4;;;192.168.21.103:18862;;192.168.21.51:4505
> root;;;;;sendmail;;;6299;;4;;tcp4;;;192.168.21.159:25;;;;;*:*

Dann so:
sockstat -4 | sed "s/ \+/;/g" | sed "s/;ADDRESS/ ADDRESS/g"