
Ferramenta de utilização de largura de banda no terminal

Esta é uma ferramenta de linha de comando para exibir a utilização atual da rede por processo, conexão e IP/hostname remoto.
Este projeto está em manutenção passiva. Problemas críticos serão resolvidos, mas nenhum novo recurso está sendo desenvolvido. No entanto, isso se deve mais à falta de financiamento e/ou mão de obra do que qualquer outra coisa, então pull requests são mais que bem-vindos. Além disso, se você puder e estiver disposto a contribuir com este projeto a longo prazo, gostaríamos de convidá-lo a se candidatar para co-manutenção.
Para mais detalhes, veja O Futuro do Bandwhich #275.
bandwhich captura uma interface de rede fornecida e grava o tamanho dos pacotes IP, cruzando com o sistema de arquivos /proc no Linux, lsof no macOS ou usando WinApi no Windows. Ele é responsivo ao tamanho da janela do terminal, exibindo menos informações se não houver espaço. Também tentará resolver IPs para seus nomes de host em segundo plano usando DNS reverso no melhor esforço.
Para instruções detalhadas para cada plataforma, veja INSTALL.md.
Oferecemos vários binários genéricos em releases para vários sistemas operacionais.
| SO | Arquitetura | Suporte | Uso |
|---|---|---|---|
| Android | aarch64 | Melhor esforço |
Todos os dispositivos Android modernos. Observe que este é um arquivo binário puro, não um APK adequado para uso geral. |
| Linux | aarch64 | Completo | ARMv8+ de 64 bits (servidores, alguns roteadores modernos, RPi-4+). |
| armv7hf | Melhor esforço | ARMv7 de 32 bits (roteadores antigos, pré-RPi-4). | |
| x64 | Completo | A maioria dos desktops e servidores Linux. | |
| MacOS | aarch64 | Completo | Macs com silício da Apple (2021+). |
| x64 | Macs Intel (pré-2021). | ||
| Windows | x64 | Completo | A maioria dos desktops e servidores Windows. |
git clone https://github.com/imsnif/bandwhich.git
cd bandwhich
cargo build --release
Para a versão mínima suportada do Rust mais atualizada, consulte o campo rust-version em Cargo.toml.
A compilação cruzada para destinos alternativos é suportada via cross. Aqui está o procedimento aproximado:
uname -m.cross.cross build --release --target <TRIPLETO_DE_DESTINO>.Até que cross-rs/cross#1222 seja resolvido, use a versão mais recente do HEAD:
cargo install --git https://github.com/cross-rs/cross.git cross
cross build --release --target aarch64-linux-android
Como o bandwhich captura pacotes de rede, ele requer privilégios elevados. No Linux, existem duas maneiras principais de fazer isso:
setcapbandwhich tenha os privilégios necessários (chamados de "capabilities" no Linux).# atribuir capabilities
sudo setcap cap_sys_ptrace,cap_dac_read_search,cap_net_raw,cap_net_admin+ep $(command -v bandwhich)
# executar como usuário não privilegiado
bandwhich
cap_sys_ptrace,cap_dac_read_search: permite acesso a /proc/<pid>/fd/, para que o bandwhich possa determinar qual porta aberta pertence a qual processo.cap_net_raw,cap_net_admin: permite capturar pacotes no seu sistema.sudo (ou alternativa)sudo bandwhich
Observe que se o seu método de instalação instalou o bandwhich em algum lugar do seu diretório home (você pode verificar com command -v bandwhich), você pode receber um erro command not found. Isso ocorre porque em muitas distribuições, o sudo por padrão não mantém o $PATH do seu usuário por questões de segurança.
Para contornar isso, você pode fazer uma das seguintes opções:
sudo preservar sua variável de ambiente $PATH;$PATH ao executar o bandwhich: sudo env "PATH=$PATH" bandwhich;sudo: sudo $(command -v bandwhich).Você pode precisar instalar primeiro o npcap para capturar pacotes no Windows.
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
Veja CONTRIBUTING.md.
MIT