O seguinte comando irá funcionar em qualquer Unix que saia no mesmo formato que Ubuntu / Debian - onde o endereço local está na coluna 4 e a saída inclui um cabeçalho de 2 linhas no topo. Se algum desses números for diferente, ajuste o comando awk abaixo.
Se quiser apenas IPv4:
netstat -lnt | awk 'NR>2{print $4}' | grep -E '0.0.0.0:' | sed 's/.*://' | sort -n | uniq
Se quiser apenas IPv6:
netstat -lnt | awk 'NR>2{print $4}' | grep -E ':::' | sed 's/.*://' | sort -n | uniq
Se quiser os dois juntos:
netstat -lnt | awk 'NR>2{print $4}' | grep -E '(0.0.0.0:|:::)' | sed 's/.*://' | sort -n | uniq
O comando emite uma lista de números de portas que estão à escuta em todos os interfaces. Se quiser listar todas as portas que estão à escuta no interface localhost, então use algo como isto:
netstat -lnt | awk 'NR>2{print $4}' | grep -E '(127.0.0.1:|::1:)' | sed 's/.*://' | sort -n | uniq