是的,Linux 的 netstat
命令可以通过管道结合其他工具(如 grep
)来按 IP 地址筛选输出。以下是几种常见的用法:
netstat -tuln | grep '192.168.1.100'
-t
:显示 TCP 连接-u
:显示 UDP 连接-l
:仅显示监听状态的端口-n
:禁用主机名解析(直接显示 IP)grep
:筛选包含 192.168.1.100
的行(本地或远程 IP)。netstat -antp | grep '192.168.1.200'
-a
:显示所有连接(包括已建立和非监听状态)-p
:显示进程信息(需 root 权限)192.168.1.200
通信的所有连接。netstat -atn | grep '10.0.0.5'
-a
和 -t
组合:仅显示 TCP 连接。awk
提取特定字段如果只想查看远程 IP(第 5 列)或本地 IP(第 4 列):
netstat -ant | awk '$5 ~ /203.0.113.42/'
$5 ~ /IP/
:匹配第 5 列(远程 IP:Port)中的 IP。ss
(推荐)现代 Linux 系统推荐使用 ss
(更快速,功能类似):
ss -tunp dst 192.168.1.100
dst
:指定目标 IP,也可用 src
匹配源 IP。-p
)需 root 权限。grep
模式(如 grep '::1'
)。grep
可筛选状态(如 grep 'ESTABLISHED'
)。$ netstat -antp | grep '192.168.1.1'
tcp 0 0 192.168.1.100:22 192.168.1.1:65432 ESTABLISHED 1234/sshd: user
192.168.1.1
的所有 TCP 连接及进程信息。如果需要更复杂的筛选,可以结合 awk
或 ss
的过滤语法进一步处理。