Snitch
Overview
Snitch, c'est l'outil moderne et élégant pour inspecter les connexions réseau, offrant une interface TUI (Terminal User Interface) interactive avec mise à jour en temps réel. Snitch permet de visualiser les connexions réseau actives, filtrer par protocole (TCP/UDP), état (LISTEN, ESTABLISHED), et afficher des informations détaillées sur les processus, PID, adresses et ports. Il remplace efficacement les outils traditionnels comme netstat et ss avec une interface plus moderne et des fonctionnalités avancées.
Snitch se distingue par son interface TUI interactive, son affichage en temps réel, ses filtres avancés, sa résolution DNS et de noms de services, et ses formats de sortie multiples (table, JSON, CSV). Il est particulièrement adapté au diagnostic réseau, à l'inspection de connexions, et au monitoring réseau en temps réel.
Informations essentielles
| Propriété | Valeur |
|---|---|
| Site officiel | https://github.com/karol-broda/snitch |
| Licence | MIT |
| Nationalité | International |
| Déploiement | Installation binaire, package manager, Docker |
| Difficulté | Facile |
| Technologies | Go |
TL;DR
Snitch est idéal pour inspecter les connexions réseau avec interface TUI interactive, affichage en temps réel, filtres avancés, et sortie JSON/CSV pour scripting.
Points clés à retenir :
- Interface TUI interactive moderne
- Affichage en temps réel des connexions
- Filtres avancés (protocole, état, IPv4/IPv6)
- Résolution DNS et noms de services
- Sortie multiple (table, JSON, CSV)
- Monitoring de processus
- Support Linux et macOS
- Installation simple (binaire, packages, Docker)
Compatibilité et intégrations
- Plateformes : Linux, macOS
- Formats de sortie : Table formatée, JSON, CSV, plain text
- Résolution : DNS (adresses IP), noms de services (ports)
- Filtres : TCP/UDP, LISTEN/ESTABLISHED, IPv4/IPv6
- Monitoring : Surveillance de processus spécifiques
- Docker : Images OCI disponibles (Alpine, Debian, Ubuntu, Scratch)
Avantages
- Interface TUI moderne : Interface interactive avec navigation au clavier
- Temps réel : Mise à jour en temps réel des connexions
- Filtres avancés : Filtrage par protocole, état, adresse, port, processus
- Résolution intelligente : DNS et noms de services avec cache
- Sortie flexible : Table formatée, JSON, CSV, plain text
- Monitoring : Surveillance et kill de processus
- Performance : Résolution DNS parallèle et cache pour performance
- Thèmes : Support de multiples thèmes (auto, dark, light, mono)
- Configuration : Fichier de configuration TOML
- Mémoire d'état : Sauvegarde des préférences entre sessions
- Cross-platform : Linux et macOS
Limites
- Linux et macOS uniquement (pas Windows)
- Nécessite privilèges root ou CAP_NET_ADMIN pour informations complètes processus
- Communauté plus petite que outils établis (netstat, ss)
- Nécessite Go pour compilation depuis source
Fonctionnalités principales
Interface TUI interactive
- Affichage temps réel : Liste de connexions mise à jour en temps réel
- Navigation clavier : Navigation avec j/k, flèches, recherche
- Filtres interactifs : Toggle TCP/UDP, LISTEN/ESTABLISHED/OTHER
- Tri : Tri par différents champs avec inversion
- Monitoring : Surveillance de processus spécifiques (highlight)
- Détails : Affichage détaillé des connexions
- Kill : Arrêt de processus avec confirmation
Filtres et recherche
- Protocoles : Filtrage TCP ou UDP
- États : LISTEN, ESTABLISHED, OTHER
- IP : IPv4 ou IPv6
- Recherche : Recherche dans les connexions
- Filtres avancés : Syntaxe
key=valuepour filtrage précis
Résolution
- DNS : Résolution d'adresses IP vers hostnames
- Services : Résolution de ports vers noms de services
- Cache DNS : Cache pour performance améliorée
- Parallélisme : Résolution DNS parallèle
Formats de sortie
- Table formatée : Table stylée avec bordures (défaut)
- Plain text : Sortie parsable sans formatage
- JSON : Sortie JSON pour scripting
- CSV : Sortie CSV pour analyse
- Pager : Utilisation automatique d'un pager si nécessaire
Configuration
- Fichier config :
~/.config/snitch/snitch.toml - Thèmes : Auto, dark, light, mono, et thèmes personnalisés
- Mémoire d'état : Sauvegarde des préférences entre sessions
- Variables d'environnement : Configuration via variables d'environnement
Déploiement
Installation automatique (script)
curl -sSL https://raw.githubusercontent.com/karol-broda/snitch/master/install.sh | sh
Arch Linux (AUR)
# avec yay
yay -S snitch-bin
# avec paru
paru -S snitch-bin
Homebrew (macOS)
brew install snitch
Docker
# Alpine (défaut, ~17MB)
docker pull ghcr.io/karol-broda/snitch:latest.
# Scratch (minimal, ~9MB)
docker pull ghcr.io/karol-broda/snitch:latest-scratch.
# Debian
docker pull ghcr.io/karol-broda/snitch:latest-debian.
# Ubuntu
docker pull ghcr.io/karol-broda/snitch:latest-ubuntu
Exécution Docker :
# Basique - voit les sockets mais pas les noms de processus
docker run --rm --net=host snitch:latest ls.
# Complet - inclut PID, nom de processus, utilisateur
docker run --rm --net=host --pid=host --cap-add=SYS_PTRACE snitch:latest ls
Binaire
Télécharger depuis les releases GitHub et extraire :
tar xzf snitch_*.tar.gz.
sudo mv snitch /usr/local/bin/
Utilisation
Interface TUI interactive
snitch # TUI avec toutes les connexions
snitch -l # TUI avec seulement les sockets en écoute
snitch -t # TCP uniquement
snitch -e # Connexions établies uniquement
snitch -i 2s # Intervalle de rafraîchissement de 2 secondes
Raccourcis clavier :
j/k, ↑/↓: Navigationg/G: Haut/bas de la listet/u: Toggle TCP/UDPl/e/o: Toggle LISTEN/ESTABLISHED/OTHERs/S: Cycle de tri / inversionw: Surveiller/monitorer processus (highlight)W: Effacer toutes les surveillancesK: Tuer processus (avec confirmation)/: Rechercheenter: Détails de connexion?: Aideq: Quitter
Commande ls (one-shot)
snitch ls # Table formatée (défaut)
snitch ls -l # Sockets en écoute uniquement
snitch ls -t -l # TCP en écoute
snitch ls -e # Connexions établies uniquement
snitch ls -p # Sortie plain/parsable
snitch ls -o json # Sortie JSON
snitch ls -o csv # Sortie CSV
snitch ls -n # Numérique (pas de résolution DNS)
snitch ls --no-headers # Sans en-têtes
Filtres avancés
snitch ls proto=tcp state=listen
snitch ls pid=1234
snitch ls proc=nginx
snitch ls lport=443
snitch ls contains=google
JSON et streaming
# Sortie JSON
snitch json
snitch json -l
# Streaming JSON
snitch watch -i 1s | jq '.count'
snitch watch -l -i 500ms
Mise à jour
snitch upgrade # Vérifier les mises à jour
snitch upgrade --yes # Mise à jour automatique
snitch upgrade -v 0.1.7 # Installer une version spécifique
Configuration
Fichier de configuration
Créer ~/.config/snitch/snitch.toml :
[defaults]
numeric = false # Désactiver résolution de noms.
dns_cache = true # Cache DNS (false pour désactiver)
theme = "auto" # Thème: auto, dark, light, mono.
[tui]
remember_state = false # Mémoriser options de vue entre sessions
Variables d'environnement
SNITCH_THEME=dark # Définir thème par défaut.
SNITCH_RESOLVE=0 # Désactiver résolution DNS.
SNITCH_DNS_CACHE=0 # Désactiver cache DNS.
SNITCH_NO_COLOR=1 # Désactiver couleurs.
SNITCH_CONFIG=/path/to # Chemin personnalisé pour config
Cas d'usage
- Diagnostic réseau : Inspection rapide des connexions réseau
- Troubleshooting : Identification de processus utilisant des ports
- Monitoring : Surveillance en temps réel des connexions
- Scripting : Sortie JSON/CSV pour automatisation
- Sécurité : Identification de connexions suspectes
- Performance : Analyse de l'utilisation réseau par processus
Exemple de sortie
Table formatée :
╭─────────────────┬───────┬───────┬─────────────┬─────────────────┬────────╮
│ PROCESS │ PID │ PROTO │ STATE │ LADDR │ LPORT │
├─────────────────┼───────┼───────┼─────────────┼─────────────────┼────────┤
│ nginx │ 1234 │ tcp │ LISTEN │ * │ 80 │
│ postgres │ 5678 │ tcp │ LISTEN │ 127.0.0.1 │ 5432 │
╰─────────────────┴───────┴───────┴─────────────┴─────────────────┴────────╯
2 connections
Plain text :
PROCESS PID PROTO STATE LADDR LPORT.
nginx 1234 tcp LISTEN * 80
postgres 5678 tcp LISTEN 127.0.0.1 5432
Ressources
- GitHub : https://github.com/karol-broda/snitch
- Documentation : README GitHub avec exemples
- Releases : https://github.com/karol-broda/snitch/releases