Это адаптация netstat
. Вы можете заменить "tcp\| udp" только на "udp" или "tcp":
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
Он выведет все сокеты TCP и UDP. Вы можете добавить еще одну строку grep
перед сортировкой
| grep ":\*"
только для прослушивания сокетов (в моем дистрибутиве они связаны с ":*" в качестве порта) и другой строкой
| grep -v ":::"
не перечислять сокеты IPv6.
Последняя строка сжимает выходные данные и расширяет их в оптимальном формате столбцов после удаления столбцов 2, 3 и 5; удалите его, если у вас не установлена column
.
В моей домашней системе разработки (OpenSuSE 12.3, а не Fedora) полный скрипт
#!/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
возвращает (у меня также есть дополнительная строка перезаписи адреса) протокол, интерфейс, номер порта, идентификатор процесса и имя команды.
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