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-Key: 1388661451

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

Printed on: April 28, 2024 at 23:04 o'clock

Member: erikro
erikro Oct 14, 2021 at 17:11:31 (UTC)
Goto Top
Moin,

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

Liebe Grüße

Erik
Member: SilenZer
SilenZer Oct 15, 2021 at 06:53:52 (UTC)
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.
Member: erikro
erikro Oct 15, 2021 at 07:02:46 (UTC)
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?
Member: SilenZer
SilenZer Oct 15, 2021 at 07:20:37 (UTC)
Goto Top
Jede Ausgabe in eine separate Zelle. 7 Zellen je Zeile
Member: erikro
erikro Oct 15, 2021 at 09:08:20 (UTC)
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
Member: SilenZer
SilenZer Oct 15, 2021 at 09:30:05 (UTC)
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.
Member: erikro
Solution erikro Oct 15, 2021 at 09:36:24 (UTC)
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"