prtv0.5.0

Диагностика сети на macOS и Linux

Найдите процесс за занятым портом.

Просматривайте сетевые соединения, процессы и SSH-туннели в терминале. Фильтруйте обновляемую таблицу для поиска конфликтов портов или выгружайте результаты для скриптов.

Rust · MIT · Последнее обновление

Пример работыprt
prt watch 3000 5432 8080

:3000 UP node (2410) since 4m
:5432 UP postgres (1901) since 4m
:8080 DOWN since 12s

prt

Возможности

Сведения о процессе

Просматривайте командную строку, родительские процессы, открытые файлы и связанные сетевые соединения.

Наблюдение за соединениями

Таблица выделяет новые и закрытые соединения. Фильтруйте по порту, протоколу, процессу, состоянию или пользователю.

Снимки и потоковый вывод

Выгружайте снимок в JSON/CSV, поток NDJSON или наблюдайте за выбранными портами разработки.

Пример работы · prtprt — Пример работы

Диагностика сети на macOS и Linux

С чего начать

  1. Начните с порта

    Запустите prt и найдите нужный порт или процесс.

  2. Откройте сведения о процессе

    Откройте детали и топологию процесса, затем проверьте связанные SSH-туннели.

01 / Установка

Установка

cargo install prt

02 / README

Документация

Настройка, примеры использования и справочник API.

README ↗
Читать документацию

prt

Показывает в реальном времени, какие процессы занимают сетевые порты.

Crates.io Загрузки CI Лицензия MIT Документация API

English · Русский · 中文

prt — управляемый с клавиатуры терминальный интерфейс для просмотра сетевых соединений, поиска конфликтов портов, исследования процессов и управления SSH-туннелями в macOS и Linux. В нём есть живая таблица соединений, фильтры, история изменений, топология процессов, оповещения и форматы для скриптов.

Демо

13-секундное демо воспроизводится прямо в README. Также можно открыть неподвижный кадр или прочитать текстовое описание демо. Запись воспроизводится из файла docs/demo.tape.

Быстрый старт

Требования

  • Rust 1.75 или новее для установки через Cargo
  • macOS 10.15 или новее со встроенной утилитой lsof
  • Linux с подключённой файловой системой /proc
  • Терминал с UTF-8; в широком окне помещается больше столбцов

Установка и запуск

cargo install prt
prt

Запустите sudo prt, если операционная система скрывает процессы других пользователей. Для обычного просмотра повышенные права не нужны.

Сборка текущего исходного кода:

git clone https://github.com/rekurt/prt.git
cd prt
cargo install --path crates/prt

Основные возможности

Задача Что делает prt
Найти конфликт портов Ищет по порту, процессу, протоколу, состоянию, сервису, PID и пользователю
Следить за изменениями Обновляет данные каждые две секунды и выделяет новые и закрытые соединения
Исследовать процесс Показывает командную строку, дерево родителей, CPU, память, открытые файлы и соединения
Посмотреть топологию Рисует дерево процесс → локальный порт → удалённый адрес
Найти подозрительные слушатели Помечает их [!] и поддерживает отдельный фильтр
Работать с контейнерами Показывает контейнер Docker или Podman, которому принадлежит процесс
Управлять SSH-переадресацией Читает SSH config, создаёт, редактирует, перезапускает и сохраняет туннели
Автоматизировать проверки Экспортирует снимок JSON/CSV или непрерывный поток NDJSON

Также prt оценивает общую сетевую скорость, сопоставляет известные порты с сервисами, поддерживает правила оповещений и контекстные действия: завершение процесса, блокировку адреса, копирование, трассировку и SSH-переадресацию.

Режимы командной строки

prt                         # интерактивный интерфейс
prt --lang ru               # русский язык (также en и zh)
prt --export json           # один JSON-снимок и выход
prt --export csv            # один CSV-снимок и выход
prt --json                  # непрерывный поток NDJSON
prt watch 80 443 5432       # компактный UP/DOWN-монитор выбранных портов
sudo prt                    # показать доступные root процессы

--export создаёт конечный снимок. --json продолжает работать и на каждом цикле сканирования выводит по одному объекту на соединение. Поток корректно останавливается, когда следующая команда в конвейере, например head, закрывает канал.

# Сохранить снимок для сравнения или отчёта об инциденте.
prt --export json > ports.json

# Вывести имена процессов из живого потока.
prt --json | jq -r '.process.name'

# Следить за портами разработки.
prt watch 3000 5432 8080

Интерфейс

Tab и Shift+Tab переключают три основных раздела:

Раздел Назначение Подвкладки
Соединения Сортируемая таблица и дополнительная панель подробностей Нет
Процессы Данные выбранного процесса и его сетевая топология Детали, Топология
SSH Хосты из SSH config и управляемые туннели Хосты, Туннели

Нажмите ?, чтобы открыть встроенную справку. Если неудобно запоминать сочетания, нажмите : и найдите действие в палитре команд.

Основные клавиши

Клавиша Действие
? Открыть справку; любая клавиша закрывает её
q Выйти
Tab / Shift+Tab Следующий / предыдущий раздел
Space Контекстное меню действий
: Палитра команд с поиском
/ Поиск и фильтр; двойной Esc очищает непустой фильтр
p Приостановить или продолжить автообновление
r Обновить сейчас
s Ввести пароль sudo для доступа к дополнительным процессам
L Сменить язык интерфейса
j / k, / Перемещение и прокрутка
g / G, Home / End В начало / в конец
K / Delete Запросить завершение выбранного процесса
c Скопировать выбранное соединение

Клавиши отдельных разделов:

Контекст Клавиша Действие
Соединения Enter Открыть выбранный процесс в разделе «Процессы»
Соединения d Показать или скрыть нижнюю панель подробностей
Соединения o / O Следующий столбец сортировки / обратный порядок
Процессы [ / ] Переключить «Детали» и «Топологию»
SSH [ / ] Переключить «Хосты» и «Туннели»
SSH Хосты Enter Открыть форму туннеля для выбранного хоста
SSH Хосты r Перечитать SSH config и конфигурацию prt
SSH Туннели n / e Создать / изменить туннель
SSH Туннели K / r / s Завершить / перезапустить / сохранить туннели

Поиск и отслеживание изменений

Нажмите /, чтобы отфильтровать таблицу. Обычный текст сопоставляется с данными соединения; псевдонимы new, gone и active фильтруют жизненный цикл. Введите ! или suspicious, чтобы увидеть только соединения, отмеченные эвристиками безопасности.

Новые строки зелёные, закрытые — тускло-красные и остаются в таблице пять секунд. Состояние соединения и возраст отображаются текстом, но различие new/gone пока передаётся цветом.

Конфигурация

Необязательный файл конфигурации: ~/.config/prt/config.toml. Если файла нет, используются значения по умолчанию. Ошибка разбора выводится пользователю, после чего также применяются значения по умолчанию.

# Названия сервисов для портов.
[known_ports]
3000 = "frontend"
5432 = "postgres"

# Звуковой сигнал при новом SSH-соединении.
[[alerts]]
port = 22
action = "bell"

# Подсветка слушающих процессов Python.
[[alerts]]
process = "python"
state = "LISTEN"
action = "highlight"

# Дополнительный SSH-хост.
[[ssh_hosts]]
alias = "staging"
hostname = "staging.example.com"
user = "deploy"
port = 22

Условия оповещений: port, process, state, connections_gt. Действия: bell и highlight. Звуковой сигнал срабатывает только для новых записей.

Раздел SSH также читает ~/.ssh/config. Экран туннелей сохраняет конфигурацию в секцию [[ssh_tunnels]] файла prt.

Безопасность и права

Сканирование и навигация ничего не изменяют в системе. Изменяющие состояние действия находятся в меню Space:

  • завершение процесса предлагает SIGTERM или SIGKILL;
  • блокировка адреса требует подтверждения и подходящих прав;
  • трассировка требует прав ptrace в Linux или доступа к dtruss в macOS;
  • SSH-переадресация запускает процесс ssh с параметрами из формы туннеля.

Перед продолжением проверьте подтверждение или заполненную форму. Правила сообщения об уязвимостях описаны в политике безопасности.

Доступность документации

  • В начале README находится копируемый быстрый старт, а ссылки имеют понятные названия.
  • У демо есть неподвижный кадр, подробный альтернативный текст и текстовое описание.
  • Интерфейс полностью управляется клавиатурой; доступны встроенная справка и палитра команд.
  • Интерфейс и README доступны на английском, русском и китайском языках.
  • Состояния соединений и подозрительные записи обозначены текстом; сигналы new/gone пока передаются цветом.
  • JSON, CSV, NDJSON и watch-режимы служат альтернативой полноэкранному TUI.

Если терминальный интерфейс несовместим со вспомогательной технологией, наиболее предсказуемый машиночитаемый вариант — prt --export json.

Архитектура и разработка

Репозиторий — Rust workspace из двух пакетов:

crates/
├── prt-core/   сканирование, отслеживание, фильтры, оповещения,
│               конфигурация, процессы, контейнеры, i18n и платформы
└── prt/        CLI, интерфейс ratatui, ввод, потоковый и watch-режимы,
                трассировка и SSH-туннели
cargo build --workspace
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings
cargo fmt --all -- --check

Документация библиотеки доступна на docs.rs для prt-core, правила участия — в CONTRIBUTING.md.

Лицензия

Проект распространяется по лицензии MIT.

Если prt оказался полезен, можно поставить проекту звезду на GitHub.

prt

Проверьте локальные соединения

Установить prt →

03 / Все проекты

Другие проекты rekurt

Библиотеки, консольные инструменты и приложения.

Все проекты