获取 Fedora 17 中打开(监听)套接字的简明列表

获取 Fedora 17 中打开(监听)套接字的简明列表

我尝试过netstat各种lsof选项,但得到的都是垃圾结果。我感兴趣的是了解以下数据:

  • 将套接字绑定到端口的应用程序 - 端口号

如果可能的话,我想从这个列表中排除 UNIX 套接字,但这不是很重要。

详细说明:通过“垃圾”,我的意思是既不打印netstat也不lsof打印端口号......我得到的内容看起来像:

rpc.statd   900 rpcuser    8u  IPv4   16330      0t0  UDP *:51038 

我希望端口号是 51038,但事实并非如此,我甚至无法弄清楚这些信息是什么。更糟糕的是,有时我通常期望端口号是字母而不是数字 - 这非常无用,因为我试图弄清楚哪个程序占用了我试图绑定/连接的端口(我怀疑这些字母是某个东西的别名,但说真的......谁需要它?)

答案1

这是一个netstat改编。你可以用“udp”或“tcp”单独替换“tcp\|udp”:

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

返回(我还有一个额外的地址重写行)协议、接口、端口号、进程 ID 和命令名称。

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

答案2

Nmap一直是UNIX和Windows的重量级端口嗅探器之一,您可以使用其输出来进行各种示例。

nmap -Pn localhost

给出:

Starting Nmap 6.25 ( http://nmap.org ) at 2013-07-22 01:48 BST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0023s latency).
rDNS record for 127.0.0.1: localhost.localdomain
Not shown: 997 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp
631/tcp open  ipp

从 yum 仓库获取:yum install nmap

答案3

您尝试过使用 sockstat 吗?我不知道 Fedora,但我在 FreeBSD 和 Ubuntu 上使用 sockstat 来获取您正在寻找的信息。

相关内容