Esta é uma adaptação de netstat
. Você pode substituir "tcp \ | udp" por "udp" ou "tcp" sozinho:
netstat -nap \
| grep "^\(tcp\|udp\)" \
| grep -v "\.255:\|127\.0\.0\.1:" \
| sort -n -k 4,6 \
| sort -k 1 \
| sed -e 's/LISTEN//g' \
| tr -s " " "\t" | cut -f1,4,6- | column -t
Ele emitirá todos os soquetes TCP e UDP. Você pode adicionar outra linha grep
antes do tipo
| grep ":\*"
para obter somente sockets de escuta (na minha distribuição eles estão associados a ": *" como porta), e outra linha
| grep -v ":::"
para não listar soquetes IPv6.
A última linha comprime a saída e a reexpande em um formato de coluna ideal após remover as colunas 2, 3 e 5; remova-o se você não tiver column
instalado.
No meu sistema de desenvolvimento home (OpenSuSE 12.3, não no Fedora) o script completo
#!/bin/sh
netstat -nap \
| grep "^\(tcp\|udp\)" \
| grep -v "\.255:\|127\.0\.0\.1:" \
| grep -v ":::" \
| grep ":\*" \
| sort -n -k 4,6 \
| sort -k 1 \
| sed -e 's/LISTEN//g' \
| tr -s " " "\t" | cut -f1,4,6- | tr "[:/]" " " | column -t
retorna (eu também tenho um protocolo adicional de linha de reescrita de endereço), interface, número da porta, ID do processo e nome do comando.
tcp ANY 111 649 rpcbind
tcp ANY 1190 1848 xinetd
tcp ANY 139 2364 smbd
tcp ANY 21 1813 vsftpd
tcp ANY 22 1855 sshd
tcp ANY 25 3229 master
tcp ANY 3306 2896 mysqld
tcp ANY 3690 3053 svnserve
tcp ANY 389 2293 slapd
tcp ANY 445 2364 smbd
tcp ANY 8200 2952 minidlna
tcp ANY 902 2153 vmware-authd
tcp INTERNAL 3128 2449 squid
tcp INTERNAL 53 2386 named
udp ANY 111 649 rpcbind
udp ANY 123 2918 ntpd
udp ANY 137 2177 nmbd
udp ANY 138 2177 nmbd
udp ANY 1900 2952 minidlna
udp ANY 38408 2449 squid
udp ANY 631 648 cupsd
udp ANY 825 649 rpcbind
udp EXTERNAL 123 2918 ntpd
udp EXTERNAL 137 2177 nmbd
udp EXTERNAL 138 2177 nmbd
udp INTERNAL 123 2918 ntpd
udp INTERNAL 137 2177 nmbd
udp INTERNAL 138 2177 nmbd
udp INTERNAL 53 2386 named
udp INTERNAL 55440 2952 minidlna