Project Icon

bandwhich

实时监控网络流量的开源命令行工具

bandwhich是一个开源的命令行工具,可实时显示按进程、连接和远程IP/主机名划分的网络使用情况。该工具通过嗅探网络接口并与系统信息交叉引用,支持Linux、macOS和Windows平台。bandwhich为用户提供直观的网络流量可视化,便于监控和分析网络活动。

bandwhich

演示

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

目录

项目状态

本项目处于被动维护状态。关键问题将得到解决,但不会开发新功能。然而,这主要是由于缺乏资金和/或人力,因此欢迎提交拉取请求。此外,如果您有能力并愿意长期为这个项目做出贡献,我们诚邀您申请成为共同维护者。

更多详情,请参阅 Bandwhich 的未来 #275

它是如何工作的?

bandwhich 嗅探指定的网络接口并记录IP数据包大小,在Linux上与/proc文件系统交叉引用,在macOS上使用lsof,在Windows上使用WinApi。它会根据终端窗口大小做出响应,如果空间不足则显示较少的信息。它还会尝试在后台通过反向DNS将IP解析为主机名,尽最大努力完成。

安装

下游打包状态

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

打包状态

下载预编译二进制文件

我们在 releases 中为各种操作系统提供了几个通用二进制文件。

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

所有现代Android设备。

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

Linuxaarch64完全64位ARMv8+(服务器、一些现代路由器、RPi-4+)。
armv7hf尽力而为32位ARMv7(较旧的路由器、pre-RPi-4)。
x64完全大多数Linux桌面和服务器。
MacOSaarch64完全Apple silicon Macs(2021+)。
x64Intel Macs(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中称为"capabilities")。
  • 如果您希望给予所有非特权用户完全访问bandwhich的监控功能,请使用此方法。
    • 这是单用户机器所有用户都受信任推荐设置。
    • 如果您希望确保用户无法看到其他人的流量,则不建议使用此方法。
# 分配权限
sudo setcap cap_sys_ptrace,cap_dac_read_search,cap_net_raw,cap_net_admin+ep $(command -v bandwhich)
# 以非特权用户身份运行
bandwhich

权限说明

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

2. sudo(或替代方案)

  • 每次运行都需要提升权限。
  • 如果您是多用户环境的管理员,请使用此方法。
sudo bandwhich

请注意,如果您的安装方法将bandwhich安装到您的主目录下的某个位置(可以用command -v bandwhich检查),您可能会遇到command not found错误。这是因为在许多发行版中,出于安全考虑,sudo默认不会保留您用户的$PATH

要解决这个问题,您可以执行以下任一操作:

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

安装后(Windows)

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

使用方法

用法: bandwhich [选项]

选项:
  -i, --interface <接口>           要监听的网络接口,例如 eth0
  -r, --raw                        机器友好的输出
  -n, --no-resolve                 不尝试将IP解析为主机名
  -s, --show-dns                   显示DNS查询
  -d, --dns-server <DNS服务器>     使用指定的DNS服务器IP而不是系统默认
      --log-to <日志文件>          启用调试日志记录到文件
  -v, --verbose...                 增加日志详细程度
  -q, --quiet...                   降低日志详细程度
  -p, --processes                  仅显示进程表
  -c, --connections                仅显示连接表
  -a, --addresses                  仅显示远程地址表
  -u, --unit-family <单位族>       选择特定的单位族 [默认: bin-bytes] [可能的值: bin-bytes, bin-bits, si-bytes, si-bits]
  -t, --total-utilization          显示总(累计)使用量
  -h, --help                       打印帮助信息(使用'--help'查看更多)
  -V, --version                    打印版本信息

贡献

我们非常欢迎任何形式的贡献。如果您想要新功能(或发现了错误),请开启一个issue或PR。

设置开发环境:

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

运行测试:cargo test

请注意,目前测试不包括对操作系统层(os文件夹中的任何内容)的测试。

如果您遇到困难、不确定如何处理某个问题或需要一些指导,欢迎联系:aram@poor.dev

许可证

MIT

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号