objectif
Tester l’accès réseau à un hôte/port (ou une liste de ports) et obtenir un retour explicite, avec un délai pour ne pas bloquer le terminal.
code minimal
# test TCP sur 443 avec délai 3s (sort OK/FAILED + code de retour)
nc -zv -w 3 data.pm 443
utilisation
# tester plusieurs ports d'un coup
for p in 80 443 5432; do nc -zv -w 2 db.data.pm "$p"; done
# vérifier un service TLS et le certificat (SNI)
openssl s_client -connect data.pm:443 -servername data.pm -brief < /dev/null
# tester en IPv6
nc -6 -zv -w 3 data.pm 443
# vérifier un port UDP (meilleur-effort, pas toujours fiable)
nc -zvu -w 3 dns.data.pm 53
# wrapper avec timeout (évite les hangs; GNU timeout)
timeout 5s nc -zv data.pm 22
variante(s) utile(s)
# compat macOS/BSD (timeout via -G au lieu de -w)
nc -zv -G 3 data.pm 443
# test rapide sans nc (bash seulement): exit 0 si OK, 1 si KO
bash -c 'echo > /dev/tcp/data.pm/443' 2>/dev/null && echo "ouvert" || echo "fermé"
# via un jump host SSH (test d’un port interne)
ssh -J user@bastion data.pm nc -zv -w 3 10.0.0.5 5432
# scanner une plage limitée (prudence, conforme à vos politiques)
nc -zv -w 1 data.pm 8000-8010
notes
-zsonde sans envoyer de données,-vrend la sortie explicite,-w(GNU) et-G(BSD/macOS) définissent le délai.- UDP ne garantit pas de réponse; un “open” peut ne pas être détecté de façon fiable sans protocole applicatif.
- pour TLS,
openssl s_clientvalide aussi le handshake et peut afficher les infos de certificat. - utilisez des délais pour éviter les blocages; adaptez IPv4/IPv6 avec
-4ou-6selon le besoin.