#利用率 #网络 #命令行界面 #命令行工具

app bandwhich

按进程、连接和远程 IP/主机名显示当前网络利用率

22 个版本 (重大更改)

0.23.0 2024 年 8 月 17 日
0.22.2 2024 年 1 月 27 日
0.21.1 2023 年 10 月 16 日
0.20.0 2020 年 10 月 15 日
0.6.0 2019 年 12 月 30 日

#728网络编程

Download history 149/week @ 2024-04-26 106/week @ 2024-05-03 111/week @ 2024-05-10 128/week @ 2024-05-17 89/week @ 2024-05-24 117/week @ 2024-05-31 260/week @ 2024-06-07 132/week @ 2024-06-14 101/week @ 2024-06-21 115/week @ 2024-06-28 327/week @ 2024-07-05 188/week @ 2024-07-12 109/week @ 2024-07-19 135/week @ 2024-07-26 79/week @ 2024-08-02 85/week @ 2024-08-09

每月 437 次下载

MIT 许可证

120KB
2.5K SLoC

bandwhich

demo

这是一个 CLI 工具,用于显示当前按进程、连接和远程 IP/主机名显示的网络利用率

目录

项目状态

该项目处于被动维护状态。将解决关键问题,但不再开发新功能。然而,这更多的是由于资金和/或人力不足,因此欢迎拉取请求。此外,如果您能够并愿意长期为该项目做出贡献,我们欢迎您申请共同维护者。

有关更多详细信息,请参阅 Bandwhich 的未来 #275

它是如何工作的?

bandwhich 检测指定的网络接口并记录 IP 数据包大小,与 Linux 的 /proc 文件系统、macOS 的 lsof 或 Windows 的 WinApi 进行交叉引用。它响应终端窗口大小,如果没有空间,则显示较少的信息。它还会尝试在后台使用反向 DNS 尽力将 IP 解析为其主机名。

安装

下游打包状态

有关每个平台的详细说明,请参阅 INSTALL.md

Packaging status

下载预构建的二进制文件

我们在 发布 中提供了针对各种操作系统的一些通用二进制文件。

操作系统架构支持用法
Androidaarch64尽力而为

所有现代Android设备。

注意,这是一个纯二进制文件,不是适用于通用使用的APK。

Linuxaarch64完整 64位ARMv8+(服务器、一些现代路由器、RPi-4+)。
armv7hf尽力而为32位ARMv7(较老的路由器、RPi-4之前)。
x64完整 大多数Linux桌面和服务器。
MacOSaarch64完整 苹果硅Mac(2021+)。
x64 Intel Mac(2021之前)。
Windowsx64完整 大多数Windows桌面和服务器。

从源代码构建

git clone https://github.com/imsnif/bandwhich.git
cd bandwhich
cargo build --release

有关最新支持的Rust版本,请参阅Cargo.toml中的rust-version字段。

交叉编译

通过cross支持为其他目标交叉编译。以下是大致步骤:

  1. 检查目标架构。如果在Linux上,可以使用uname -m
  2. 查找对应目标三合一对的rustc平台支持
  3. 安装cross.
  4. 运行cross build -release -target <TARGET_TRIPLE>

Android

直到cross-rs/cross#1222被解决,请使用最新的HEAD版本。

cargo install --git https://github.com/cross-rs/cross.git cross
cross build --release --target aarch64-linux-android

安装后(Linux)

由于bandwhich嗅探网络数据包,它需要提升权限。在Linux上,主要有两种方法来完成此操作:

1. setcap

  • 永久允许bandwhich二进制文件所需的权限(在Linux中称为“能力”)。
  • 如果您想给所有未授权用户完全访问bandwhich的监控能力。
    • 这是为单个用户机器或所有用户都受信任的情况下推荐设置。
    • 如果您想确保用户不能看到他人的流量,则不建议这样做。
# assign capabilities
sudo setcap cap_sys_ptrace,cap_dac_read_search,cap_net_raw,cap_net_admin+ep $(command -v bandwhich)
# run as unprivileged user
bandwhich

能力说明

  • cap_sys_ptrace,cap_dac_read_search:允许访问/proc/<pid>/fd/,以便bandwhich可以确定哪个打开的端口属于哪个进程。
  • cap_net_raw,cap_net_admin:允许在您的系统上捕获数据包。

2. sudo(或替代方案)

  • 每次都需要提升权限。
  • 如果您是多用户环境的管理员,请这样做。
sudo bandwhich

请注意,如果您的安装方法将bandwhich安装到您的家目录中(您可以使用bandwhich -v来检查),您可能会遇到command not found错误。这是因为许多发行版默认情况下出于安全考虑,不会保留您的$PATH环境变量。

为了克服这个问题,您可以执行以下任何一项操作:

  1. 使sudo保留您的$PATH环境变量;
  2. 在运行bandwhich时显式设置$PATHsudo env "PATH=$PATH" bandwhich;
  3. 传递到sudo的完整路径: sudo $ command -v bandwhich

安装后(Windows)

您可能首先需要在Windows上安装npcap以捕获数据包。

用法

Usage: bandwhich [OPTIONS]

Options:
  -i, --interface <INTERFACE>      The network interface to listen on, eg. eth0
  -r, --raw                        Machine friendlier output
  -n, --no-resolve                 Do not attempt to resolve IPs to their hostnames
  -s, --show-dns                   Show DNS queries
  -d, --dns-server <DNS_SERVER>    A dns server ip to use instead of the system default
      --log-to <LOG_TO>            Enable debug logging to a file
  -v, --verbose...                 Increase logging verbosity
  -q, --quiet...                   Decrease logging verbosity
  -p, --processes                  Show processes table only
  -c, --connections                Show connections table only
  -a, --addresses                  Show remote addresses table only
  -u, --unit-family <UNIT_FAMILY>  Choose a specific family of units [default: bin-bytes] [possible values: bin-bytes, bin-bits, si-bytes, si-bits]
  -t, --total-utilization          Show total (cumulative) usages
  -h, --help                       Print help (see more with '--help')
  -V, --version                    Print version

贡献

欢迎任何形式的贡献。如果您想添加新功能(或发现了一个错误),请提交一个issue或PR。

设置您的开发环境

  1. 克隆项目
  2. cargo run,或者如果您更喜欢cargo run -- -i <网络接口名称>(您通常可以使用ifconfigiwconfig找到名称)。运行此应用程序可能需要root权限,因此请确保使用(例如)sudo。

要运行测试:cargo test

请注意,目前测试没有测试os层(os文件夹中的任何内容)。

如果您遇到困难,不确定如何处理问题或需要一些指导,欢迎联系:[email protected]

许可证

MIT

依赖项

~20-35MB
~556K SLoC