
uma forma mais elegante de inspecionar conexões de rede
um ss / netstat mais amigável para humanos. inspecione conexões de rede com uma tui limpa ou tabelas estilizadas.

brew install snitch
agradecimentos a @bevanjkay por adicionar snitch ao homebrew-core
go install github.com/karol-broda/snitch@latest
nix-env -iA nixpkgs.snitch
agradecimentos a @DieracDelta por adicionar snitch ao nixpkgs
# experimente
nix run github:karol-broda/snitch
# instalar no profile
nix profile install github:karol-broda/snitch
# ou adicionar às entradas flake
{
inputs.snitch.url = "github:karol-broda/snitch";
}
# então use: inputs.snitch.packages.${system}.default
adicione snitch às suas entradas flake e importe o módulo home-manager:
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager.url = "github:nix-community/home-manager";
snitch.url = "github:karol-broda/snitch";
};
outputs = { nixpkgs, home-manager, snitch, ... }: {
homeConfigurations."user" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux;
modules = [
snitch.homeManagerModules.default
{
programs.snitch = {
enable = true;
# opcional: use o pacote do flake em vez do nixpkgs
# package = snitch.packages.x86_64-linux.default;
settings = {
defaults = {
theme = "catppuccin-mocha";
interval = "2s";
resolve = true;
};
};
};
}
];
};
};
}
temas disponíveis: ansi, catppuccin-mocha, catppuccin-macchiato, catppuccin-frappe, catppuccin-latte, gruvbox-dark, gruvbox-light, dracula, nord, tokyo-night, tokyo-night-storm, tokyo-night-light, solarized-dark, solarized-light, one-dark,
# com yay
yay -S snitch-bin
# com paru
paru -S snitch-bin
curl -sSL https://raw.githubusercontent.com/karol-broda/snitch/master/install.sh | sh
instala em ~/.local/bin se disponível, caso contrário /usr/local/bin. substitua com:
curl -sSL https://raw.githubusercontent.com/karol-broda/snitch/master/install.sh | INSTALL_DIR=~/bin sh
macos: o script de instalação remove automaticamente o atributo de quarentena (
com.apple.quarantine) do binário para permitir sua execução sem avisos do gatekeeper. para desativar isso, definaKEEP_QUARANTINE=1.
imagens oci pré-construídas disponíveis no registro de contêineres do github:
# baixar do ghcr.io
docker pull ghcr.io/karol-broda/snitch:latest # alpine (padrão)
docker pull ghcr.io/karol-broda/snitch:latest-alpine # alpine (~17MB)
docker pull ghcr.io/karol-broda/snitch:latest-scratch # mínimo, apenas binário (~9MB)
docker pull ghcr.io/karol-broda/snitch:latest-debian # debian trixie
docker pull ghcr.io/karol-broda/snitch:latest-ubuntu # ubuntu 24.04
# ou use uma versão específica
docker pull ghcr.io/karol-broda/snitch:0.2.0-alpine
alternativamente, construa localmente via nix flake:
nix build github:karol-broda/snitch#snitch-alpine
docker load < result
executando o contêiner:
# uso básico - vê sockets do host mas não nomes de processos
docker run --rm --net=host snitch:latest ls
# informações completas - inclui PID, nome do processo, usuário
docker run --rm --net=host --pid=host --cap-add=SYS_PTRACE snitch:latest ls
| flag | propósito |
|---|---|
--net=host | compartilhar o namespace de rede do host (necessário para ver conexões do host) |
--pid=host | compartilhar o namespace pid do host (necessário para informações do processo) |
--cap-add=SYS_PTRACE | ler detalhes do processo de /proc/<pid> |
nota:
CAP_NET_ADMINeCAP_NET_RAWnão são necessários. snitch lê de/proc/net/*que não precisa de capacidades de rede especiais.
baixe de releases:
snitch_<version>_linux_<arch>.tar.gz ou .deb/.rpm/.apksnitch_<version>_darwin_<arch>.tar.gztar xzf snitch_*.tar.gz
sudo mv snitch /usr/local/bin/
macos: se bloqueado com "não pode ser aberto porque o desenvolvedor não pôde ser verificado", execute:
xattr -d com.apple.quarantine /usr/local/bin/snitch
snitch # inicia tui interativo
snitch -l # tui mostrando apenas sockets em escuta
snitch ls # imprime tabela estilizada e sai
snitch ls -l # apenas sockets em escuta
snitch ls -t -e # conexões tcp estabelecidas
snitch ls -p # saída simples (analisável)
snitch / snitch toptui interativo com lista de conexões atualizada ao vivo.
snitch # todas as conexões
snitch -l # apenas escuta
snitch -t # apenas tcp
snitch -e # apenas estabelecidas
snitch -i 2s # intervalo de atualização de 2 segundos
atalhos de teclado:
j/k, ↑/↓ navegar
g/G topo/fundo
t/u alternar tcp/udp
l/e/o alternar escuta/estabelecido/outro
s/S ciclar ordenação / inverter
w vigiar/monitorar processo (destacar)
W limpar todos os vigiados
K matar processo (com confirmação)
/ pesquisar
enter detalhes da conexão
? ajuda
q sair
snitch lssaída de tabela única. usa um pager automaticamente se a saída exceder a altura do terminal.
snitch ls # tabela estilizada (padrão)
snitch ls -l # apenas escuta
snitch ls -t -l # listeners tcp
snitch ls -e # apenas estabelecidas
snitch ls -p # saída simples/analisável
snitch ls -o json # saída json
snitch ls -o csv # saída csv
snitch ls -n # numérico (sem resolução dns)
snitch ls --no-headers # omitir cabeçalhos
snitch jsonsaída json para scripts.
snitch json
snitch json -l
snitch watchtransmitir quadros json em um intervalo.
snitch watch -i 1s | jq '.count'
snitch watch -l -i 500ms
snitch upgradeverificar atualizações e atualizar no local.
snitch upgrade # verificar atualizações
snitch upgrade --yes # atualizar automaticamente
snitch upgrade -v 0.1.7 # instalar versão específica
as flags de atalho funcionam em todos os comandos:
-t, --tcp apenas tcp
-u, --udp apenas udp
-l, --listen sockets em escuta
-e, --established conexões estabelecidas
-4, --ipv4 apenas ipv4
-6, --ipv6 apenas ipv6
opções de resolução de nomes dns e serviços:
--resolve-addrs resolver endereços ip para nomes de host (padrão: true)
--resolve-ports resolver números de porta para nomes de serviço
--no-cache desabilitar cache dns (forçar novas consultas)
as consultas dns são realizadas em paralelo e armazenadas em cache para desempenho. use --no-cache para ignorar o cache para depuração ou quando os endereços mudam com frequência.
para filtragem mais específica, use a sintaxe chave=valor com ls:
snitch ls proto=tcp state=listen
snitch ls pid=1234
snitch ls proc=nginx
snitch ls lport=443
snitch ls contains=google
tabela estilizada (padrão):
╭─────────────────┬───────┬───────┬─────────────┬─────────────────┬────────╮
│ PROCESS │ PID │ PROTO │ STATE │ LADDR │ LPORT │
├─────────────────┼───────┼───────┼─────────────┼─────────────────┼────────┤
│ nginx │ 1234 │ tcp │ LISTEN │ * │ 80 │
│ postgres │ 5678 │ tcp │ LISTEN │ 127.0.0.1 │ 5432 │
╰─────────────────┴───────┴───────┴─────────────┴─────────────────┴────────╯
2 connections
saída simples (-p):
PROCESS PID PROTO STATE LADDR LPORT
nginx 1234 tcp LISTEN * 80
postgres 5678 tcp LISTEN 127.0.0.1 5432
arquivo de configuração opcional em ~/.config/snitch/snitch.toml:
[defaults]
numeric = false # desabilitar resolução de nomes
dns_cache = true # armazenar em cache consultas dns (defina false para desabilitar)
theme = "auto" # tema de cores: auto, dark, light, mono
[tui]
remember_state = false # lembrar opções de visualização entre sessões
quando remember_state = true, o tui salvará e restaurará:
o estado é salvo em $XDG_STATE_HOME/snitch/tui.json (padrão ~/.local/state/snitch/tui.json).
as flags da cli sempre têm prioridade sobre o estado salvo.
SNITCH_THEME=dark # define tema padrão
SNITCH_RESOLVE=0 # desativa resolução dns
SNITCH_DNS_CACHE=0 # desativa cache dns
SNITCH_NO_COLOR=1 # desativa saída colorida
SNITCH_CONFIG=/path/to # caminho personalizado do arquivo de configuração
/proc/net/*, root ou CAP_NET_ADMIN para informações completas do processomono