跳到内容
🛠️ToolsShed

Netstat Commands Reference

完整的netstat和ss命令参考(Linux、macOS和Windows),包含可搜索的示例。

List all connections

netstat
netstat -a
ss (modern)
ss -a

List listening ports (TCP+UDP)

netstat
netstat -tuln
ss (modern)
ss -tuln

Show TCP connections

netstat
netstat -tn
ss (modern)
ss -tn

Show UDP connections

netstat
netstat -un
ss (modern)
ss -un

Show process PIDs

netstat
netstat -tulnp
ss (modern)
ss -tulnp

Linux/macOS may require root for PID visibility

Show routing table

netstat
netstat -r
ss (modern)
ip route

Show network statistics

netstat
netstat -s
ss (modern)
ss -s

Count connections by state

netstat
netstat -an | awk '{print $6}' | sort | uniq -c | sort -rn
ss (modern)
ss -tan | awk 'NR>1 {print $1}' | sort | uniq -c

Find process using a port

netstat
netstat -tulnp | grep :8080
ss (modern)
ss -tulnp | grep :8080

Replace 8080 with your port number

Show socket summary

netstat
netstat -i
ss (modern)
ss -i
ss 是 netstat 的现代替代品,提供更快速和更详细的输出。在 Linux 系统上使用可获得更好的性能。

关于此工具

Netstat和ss是命令行实用程序,可以显示Linux、macOS和Windows系统上的活动网络连接、路由表、接口统计和套接字信息。Netstat是传统的选择,已有数十年历史,但ss(套接字统计)是Linux系统上的现代替代品—它更快、更易读,并显示详细的套接字状态信息。理解这些工具对于诊断连接问题、确定哪些应用程序正在使用网络资源、监控端口活动或追踪意外连接和侦听服务的网络管理员至关重要。

此参考指南按任务组织最有用的netstat和ss命令:检查哪些端口在侦听、查看活动连接、查找与网络活动关联的进程ID、按协议分析流量、列出各种状态的所有套接字以及监控网络接口统计。每个命令都附带其目的和典型输出格式的说明,使您可以轻松找到所需的确切语法,而无需记住数十个标志。可搜索的格式使您可以按命令名称、协议类型或用例快速过滤—无论您是在排查挂起的服务故障、审计开放端口以确保安全,还是调查带宽消耗。

系统管理员、DevOps工程师和安全专业人员每天都依赖这些命令来理解系统网络行为、检测端口冲突、验证服务是否正确侦听以及识别未授权的网络访问。无论您是第一次使用这些工具还是需要快速提醒正确的语法,此参考通过提供真实、实用的示例来节省时间,您可以立即复制并适应您的特定网络诊断或监控任务。

常见问题

代码实现

import subprocess
import platform

def run_netstat(args: list[str]) -> str:
    """Run netstat command and return output."""
    try:
        result = subprocess.run(["netstat"] + args, capture_output=True, text=True, timeout=10)
        return result.stdout
    except FileNotFoundError:
        # Try ss on Linux if netstat not found
        if platform.system() == "Linux":
            result = subprocess.run(["ss"] + args, capture_output=True, text=True, timeout=10)
            return result.stdout
        return "netstat not found"

# Show all listening TCP ports
print("=== Listening TCP ports ===")
system = platform.system()
if system == "Linux":
    print(run_netstat(["-tlnp"]))   # or ss -tlnp
elif system == "Darwin":  # macOS
    print(run_netstat(["-an", "-p", "tcp"]))
elif system == "Windows":
    print(run_netstat(["-ano", "-p", "TCP"]))

# Parse listening ports
def get_listening_ports() -> list[dict]:
    """Parse ss output on Linux to get listening ports."""
    result = subprocess.run(["ss", "-tlnp"], capture_output=True, text=True)
    ports = []
    for line in result.stdout.splitlines()[1:]:
        parts = line.split()
        if len(parts) >= 4 and parts[0] == "LISTEN":
            ports.append({"state": parts[0], "local": parts[3], "process": parts[6] if len(parts) > 6 else ""})
    return ports

if system == "Linux":
    for p in get_listening_ports():
        print(p)

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.