El siguiente comando funcionará en cualquier Unix que salga en el mismo formato que Ubuntu / Debian - donde la dirección local está en la columna 4 y la salida incluye un encabezado de 2 líneas en la parte superior. Si alguno de esos números es diferente, modifica el comando awk que aparece a continuación.
Si quieres sólo IPv4:
netstat -lnt | awk 'NR>2{print $4}' | grep -E '0.0.0.0:' | sed 's/.*://' | sort -n | uniq
Si quieres sólo IPv6:
netstat -lnt | awk 'NR>2{print $4}' | grep -E ':::' | sed 's/.*://' | sort -n | uniq
Si quieres los dos juntos:
netstat -lnt | awk 'NR>2{print $4}' | grep -E '(0.0.0.0:|:::)' | sed 's/.*://' | sort -n | uniq
El comando produce una lista de números de puerto que están a la escucha en todas las interfaces. Si quiere listar todos los puertos que están a la escucha en la interfaz del host local, entonces use algo como esto:
netstat -lnt | awk 'NR>2{print $4}' | grep -E '(127.0.0.1:|::1:)' | sed 's/.*://' | sort -n | uniq