Skip to main content

轻量级 Linux 终端网络流量监控工具

Project description

logo

netop

中文说明

netop is a focused rewrite of the original tmd-top idea for day-to-day Linux network troubleshooting. The upstream project has not seen active feature work for a while, and its original design bundled GeoIP lookup, SQLite snapshot tables, firewall mutation, and TUI rendering into one application. This fork intentionally narrows the scope to one job: fast, read-only terminal network monitoring.

netop terminal UI

Design Goals

  • Pure monitoring: no IP ban button, no iptables, nftables, or firewalld writes.
  • Stateless runtime: no SQLite database and no persistent traffic history.
  • No GeoIP: no bundled MMDB file, no location column, no per-IP lookup cost.
  • Low overhead: collect from ss, ps, and /proc/net/dev, then calculate rates from in-memory deltas.
  • Modern Textual path: use public Textual APIs and track textual>=8.2,<9 instead of pinning to textual==1.0.0.

Current Status

This is an early refactor branch. The package and CLI entry point have been renamed to netop. Compatibility with the old tmd and tmd-top command names is intentionally not preserved.

The UI currently shows:

  • interface traffic
  • listening services
  • outbound processes
  • per-service or per-process TCP connection details
  • search, refresh mode, sort mode, permission state, and rate unit state

Requirements

  • Python >= 3.10
  • Linux
  • iproute2 for ss
  • procps for ps

Install From Source

python -m pip install -e .

Usage

netop

Run with elevated privileges when possible if you need complete PID/process ownership data:

sudo netop

When started as a normal user, netop will try sudo -n ss if passwordless sudo is available. It never prompts for a sudo password inside the TUI.

Shortcuts

Key Action
q Quit
v Focus search
b Toggle bit/byte rate mode
t Slow refresh to 5 seconds
y Restore refresh to 1 second
r Sort by total traffic
c Sort by connections
i Sort by unique IP count
u Sort by upload
d Sort by download
z Sort by CPU
x Sort by memory

Click or highlight a listening service or outbound process row to display its connection details on the right.

Display Units

By default, netop displays network rates as bit rates such as Kb/s and Mb/s. Press b to switch to byte-rate mode such as KB/s and MB/s.

Data Flow

  1. ss -tniH state established reads TCP socket counters.
  2. ss -tpanH reads listening sockets, established sockets, PIDs, and process names when available.
  3. ps provides lightweight CPU and memory metadata by PID.
  4. /proc/net/dev provides interface-level counters.
  5. The collector computes deltas in memory and sends immutable snapshots to the Textual UI.

What Changed From tmd-top

Area netop direction
GeoIP Removed
SQLite Removed
Firewall ban actions Removed
Package name netop
CLI command netop only
Textual dependency textual>=8.2,<9
Runtime model Read-only, in-memory snapshots

Original Project

Original repository README: https://github.com/CDWEN0526/tmd-top

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

netop-0.1.0.tar.gz (19.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

netop-0.1.0-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file netop-0.1.0.tar.gz.

File metadata

  • Download URL: netop-0.1.0.tar.gz
  • Upload date:
  • Size: 19.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for netop-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b4f3371491da8cb48c92e522098f8234a0064cf94a830dda1e2c2184c3d0c743
MD5 b8576f939ea89a01e38811934b616f41
BLAKE2b-256 81daeffb78d3620c5114530fbac9be6c9f0a95642b444559e769ffc02cb2a2ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for netop-0.1.0.tar.gz:

Publisher: pypi.yml on i-square/netop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file netop-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: netop-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 15.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for netop-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dabc0e29cf88ffe27d1d9ae50c603741c50ec8b145205ce2d147b00dcdca84fd
MD5 67f0bbb196a4451d838eeaccc7448eea
BLAKE2b-256 2c9715faffbd59995bdb927a896e64684c567f16d59f72a9d9a44bf20379e908

See more details on using hashes here.

Provenance

The following attestation bundles were made for netop-0.1.0-py3-none-any.whl:

Publisher: pypi.yml on i-square/netop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page