Domanda

Voglio ottenere un elenco di applicazioni e le loro porte di output per un determinato elenco di applicazioni, dal mio programma C.

Sto pensando di usare qualcosa di simile

ss -natp |  awk '/firefox/ { split($4,array,":"); printf "%d ", array[2]} END{print ""}''

che mi dà un elenco come 41477 59505.

Qual è un modo efficiente di chiamare SS una volta e poi ottenere questo per tutte le applicazioni? (Pipi di output multipli? Esiste un modo ottimale di usare AWK per molte corrispondenze? Catting Ss a un file e poi awk che lo fa molte volte?)

Grazie!

È stato utile?

Soluzione

Utilizzare le capacità di array associative di awk.

ss -natp | awk '{port = split($4, array, ":"); program[$1] = program[$1] " " port; }
                END { for (p in program) print p ": " program[p]; }'

Non testato - ma il concetto è approssimativamente corretto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top