Thread Wie bekomme ich dieses AWK nach Perl portiert? (14 answers)
Opened by mika at 2019-08-03 17:29

Linuxer
 2019-08-03 20:09
#190326 #190326
User since
2006-01-27
3870 Artikel
HausmeisterIn

user image
Andere Variante (ungetestet), direkt im Perl-Code zu verwenden:

Code (perl): (dl )
my @IPs = map { my $f6 = (split m/\s+/, $_)[5]; ( split m/:/, $f6)[0] } qx/ss -4ntuh/;


Von rechts nach links lesen:
- Kommando ss -4ntuh ausführen; Dessen Ausgabe wird zeilenweise gelesen (dank Listenkontext)
- map führt etwas für jedes Element der gegebenen Liste aus; hier also für jede Zeile
- - splitten der Zeile an Whitespaces; Übernahme des 6. Feldes nach $f6
- - Dann wird $f6 am : gesplittet; der erste Wert vor dem : ist die IP; dies liefert map dann zurück
- Die Ergebnisse werden dann dem Array zugewiesen

Achtung: Das funktioniert nur mit IPv4 Adressen! IPv6 Adressen verwenden den : auch; dann eher mit s/:\d+$// den Port vom Ende abschneiden und hoffen, dass da immer ein Port steht.

Wenn Du sicher bist, dass in den Feldern vor Feld 6 keine ":" enthalten sind und Feld 6 *immer* eine Portangabe enthält, kannst Du es mit einem split() erledigen lassen:
Code (perl): (dl )
my @IPs = map { (split m/[:\s]+/, $_)[5]; ) qx/ss -4ntuh/;
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Wie bekomme ich dieses AWK nach Perl portiert?