Перейти к содержимому

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.