Ce tutoriel a pour but de vous apprendre, étape par étape, à utiliser les commandes netstat
et grep
. Vous découvrirez ce que sont ces deux outils, à quoi ils servent, leurs avantages et leurs limites, comment les installer, et comment les combiner pour résoudre des problèmes concrets.
Les explications sont conçues pour être accessibles à toute personne disposant d’un accès au terminal sous Linux ou Unix (macOS). Les exemples sont détaillés et commentés afin que vous puissiez reproduire chaque action sur votre machine tout en comprenant.
Ces deux commandes netstat
et grep
, lorsqu’elles sont associées, permettent d’obtenir rapidement des informations réseau pertinentes et de filtrer les résultats pour isoler ce qui vous intéresse. Ce tutoriel suit une progression claire : découverte de chaque commande, options principales, utilisations combinées, études de cas pratiques, alternatives modernes, bonnes pratiques et exercices pour s’entraîner.
- Pourquoi utiliser netstat et grep ensemble ?
- Qu’est-ce que netstat ?
- Les principales commandes de netstat
- Qu’est-ce que grep ?
- Les commandes principales de grep
- Les différences entre netstat et nmap
- Cas pratiques d'utilisation de netstat et grep
- Études de cas avancées
- Alternatives modernes à netstat
- Bonnes pratiques et pièges à éviter
- Exercices pratiques
Pourquoi utiliser netstat
et grep
ensemble ?
netstat
fournit une vue complète des connexions réseau, des ports ouverts et des programmes liés aux sockets. grep
permet de filtrer ces sorties par mot-clé ou expression régulière. Ensemble, ils transforment une sortie potentiellement très longue en une information précise et exploitables.
Un socket, en informatique, est un point de terminaison pour la communication bidirectionnelle sur un réseau. C’est l’un des moyens les plus courants d’établir une connexion client-serveur sur Internet.
Imaginez un socket comme l’extrémité d’un tuyau. D’un côté, il y a le programme A qui veut envoyer des données (par exemple, un navigateur web), et de l’autre, il y a le programme B qui veut les recevoir (par exemple, un serveur web). Le socket permet à ces deux programmes de communiquer.
Un socket est défini par la combinaison de trois éléments :
- Adresse IP : L’adresse unique de l’ordinateur sur le réseau.
- Port : Un numéro qui identifie un service ou une application spécifique sur cet ordinateur (par exemple, le port 80 pour le trafic web HTTP).
- Protocole : La règle de communication utilisée, comme TCP (Transmission Control Protocol) ou UDP (User Datagram Protocol).
Un socket est l’identifiant unique d’une connexion réseau entre deux programmes, à la fois pour envoyer et recevoir des données.
Pour utiliser netstat
et grep
, vous devez avoir un accès à un terminal Linux ou Unix (macOS) et, idéalement, des droits administrateur (sudo) pour obtenir toutes les informations, notamment les programmes associés aux connexions. Aucune connaissance avancée n’est requise pour commencer.
Qu’est-ce que netstat
?
Pour bien commencer, il est essentiel de comprendre ce qu’est netstat
. Ce terme est la contraction de network statistics, ce qui se traduit par « statistiques réseau ». C’est un utilitaire de ligne de commande qui a pour mission de vous fournir des informations détaillées sur les connexions réseau actives, les ports en écoute sur votre machine, les tables de routage, et même des statistiques d’interface.
Pensez à netstat
comme à un rapport de police sur l’activité réseau de votre ordinateur. Il vous dit qui parle à qui, sur quel port, et dans quel état se trouve la conversation. C’est l’outil de base pour toute investigation réseau.
Le principal avantage de netstat
est sa capacité à fournir une vue d’ensemble instantanée. En une seule commande, vous pouvez repérer un processus malveillant, identifier une application qui ne fonctionne pas correctement ou simplement vérifier si votre serveur web est bien en train d’écouter les requêtes des clients. Sa simplicité d’utilisation en fait le premier réflexe de tout administrateur pour le diagnostic réseau.
Cependant, il est important de noter que netstat
a aussi ses limites. C’est un outil relativement ancien qui, sur les systèmes modernes, est progressivement remplacé par la commande ss
(pour socket statistics). Bien que ss
soit plus rapide et plus riche en fonctionnalités, netstat
reste largement disponible et utilisé, et sa maîtrise est un passage obligé pour quiconque souhaite comprendre les bases des réseaux.
netstat
est donc une commande historique qui affiche les connexions réseau, les tables de routage, les statistiques d’interface et les sockets. Elle est utile pour voir quels ports sont ouverts, quelles connexions sont actives et quel programme est associé à une connexion.
Sur de nombreuses distributions, netstat
fait partie du paquet net-tools
. Certaines distributions modernes privilégient ss
du paquet iproute2
qui fournit des informations similaires et est plus rapide. Si netstat
n’est pas installé, il est simple à ajouter. Des instructions d’installation pour les distributions principales suivent plus bas.
Syntaxe de base
La syntaxe générale de netstat
se présente ainsi : netstat [options]
.
La plupart des usages pratiques combinent plusieurs options pour obtenir une vue précise.
Options principales de netstat
La combinaison d’options la plus utilisée est -tulpn
. Voici ce que signifie chaque lettre :-t
pour les connexions TCP,-u
pour les connexions UDP,-l
pour afficher uniquement les sockets en écoute,-p
pour afficher le PID et le nom du programme associé à chaque socket,-n
pour afficher les adresses et ports sous forme numérique (évite la résolution DNS ou nommage).
Chaque option peut être utilisée seule ou en combinaison selon le besoin. Par exemple, netstat -an
affiche toutes les connexions de façon numérique, utile pour un diagnostic rapide sans afficher les programmes.
Une connexion TCP (Transmission Control Protocol) est un protocole de communication qui garantit une transmission de données fiable et ordonnée sur un réseau, notamment Internet. On l’appelle souvent un protocole « orienté connexion » car il établit une liaison avant d’envoyer les données et s’assure qu’elles arrivent correctement.
Pour garantir la fiabilité, une connexion TCP passe par trois phases :
- Établissement de la connexion (« handshake » à trois voies) :
- L’expéditeur envoie un message SYN (synchronisation) au destinataire.
- Le destinataire répond par un message SYN-ACK (synchronisation-accusé de réception).
- L’expéditeur confirme par un message ACK (accusé de réception). Cette séquence assure que les deux machines sont prêtes à communiquer.
- Transfert des données :
- Les données sont découpées en petits paquets appelés segments.
- Chaque segment est numéroté, ce qui permet de les réassembler dans le bon ordre à l’arrivée.
- Le destinataire envoie des accusés de réception (ACK) pour chaque segment reçu. Si un segment n’est pas accusé de réception dans un certain délai, l’expéditeur le renvoie.
- Fermeture de la connexion :
- Une fois toutes les données transmises et confirmées, la connexion est fermée de manière coordonnée.
Ce processus, plus complexe que d’autres protocoles comme UDP, rend la connexion TCP idéale pour des applications où l’intégrité des données est cruciale, comme la navigation web (HTTP), le transfert de fichiers (FTP) ou l’envoi de courriels.
Une connexion UDP (User Datagram Protocol) est un protocole de communication léger et sans connexion, qui privilégie la rapidité au détriment de la fiabilité. Contrairement à TCP, UDP n’établit pas de « poignée de main » avant de transférer les données et ne vérifie pas si les paquets sont arrivés à destination, dans le bon ordre ou sans erreur.
Pensez à UDP comme à un envoi postal sans accusé de réception. L’expéditeur envoie les paquets de données (appelés datagrammes) à l’adresse de destination, sans se soucier de ce qui se passe après.
Les principales caractéristiques d’UDP sont :
- Absence de connexion : Il n’y a pas de phase d’établissement de connexion, ce qui réduit la latence.
- Non-fiable : La réception des datagrammes n’est pas garantie. Les paquets peuvent être perdus, dupliqués ou arriver dans le désordre.
- Simple : L’en-tête de paquet UDP est beaucoup plus petit que celui de TCP, ce qui le rend plus efficace.
En raison de sa rapidité, UDP est idéal pour les applications où la perte de quelques données est acceptable, mais où la latence doit être minimale. C’est le protocole de choix pour :
- Le streaming vidéo et audio en direct (comme Netflix ou Spotify).
- Les jeux en ligne, où un léger décalage est plus pénalisant que la perte d’un paquet.
- Le DNS (Domain Name System) pour une résolution rapide des noms de domaine.
- Le PID est un algorithme de contrôle utilisé en automatique et en robotique. L’acronyme PID signifie Proportionnel, Intégral, Dérivé.
L’objectif d’un contrôleur PID est de maintenir une valeur (comme la température, la vitesse ou la pression) aussi proche que possible d’une valeur cible, appelée point de consigne. Pour ce faire, il calcule un signal de correction basé sur trois éléments :
- P (Proportionnel) : Calcule la correction en fonction de l’erreur actuelle (la différence entre la valeur mesurée et le point de consigne). Plus l’erreur est grande, plus la correction est forte.
- I (Intégral) : Prend en compte l’erreur accumulée dans le temps pour éliminer les erreurs persistantes et s’assurer que le système atteint précisément le point de consigne.
- D (Dérivé) : Anticipe les changements futurs en fonction de la vitesse à laquelle l’erreur évolue. Cela permet d’amortir les oscillations et d’éviter que le système ne dépasse son objectif.
En combinant ces trois actions, le contrôleur PID ajuste en permanence une variable de sortie pour réduire l’erreur et stabiliser le système. C’est un mécanisme de contrôle en boucle fermée très efficace et largement utilisé dans des applications variées, du régulateur de vitesse d’une voiture aux systèmes de contrôle de température industriels.
Quand utiliser netstat
Maintenant que vous savez ce qu’est netstat
, explorons ses applications concrètes. Son utilité principale réside dans le diagnostic et la surveillance.
1. Diagnostiquer un problème de connectivité : Imaginez que votre serveur web ne soit plus accessible. Avant de vous précipiter pour redémarrer la machine, la première chose à faire est de vérifier si le service écoute bien sur le port 80 ou 443. Une simple commande netstat
peut vous le dire en un instant. Si le port n’est pas en état d’écoute, vous savez que le problème vient du service et non du pare-feu ou d’un autre composant.
2. Identifier un processus malveillant : Si vous constatez une activité réseau suspecte, par exemple une connexion vers une adresse IP inconnue, netstat
peut vous aider à identifier le processus qui en est à l’origine. En affichant le programme associé à la connexion, vous pouvez rapidement déterminer s’il s’agit d’une application légitime ou d’un logiciel malveillant.
3. Vérifier les connexions en cours : Vous pouvez utiliser netstat
pour voir toutes les connexions TCP et UDP actives. C’est un excellent moyen de surveiller l’activité sur un serveur. Vous pouvez ainsi savoir qui est connecté, d’où il vient (son adresse IP) et sur quel port.
Exemples pratiques simples
Exemple 1 : netstat -tulpn
Cette commande, exécutée avec sudo
, affiche les services qui écoutent sur la machine, le protocole (tcp/udp), l’adresse locale et le PID/programme. Interprétez la colonne Local Address
pour voir le port et la colonne PID/Program name
pour savoir quel binaire est en écoute.
Exemple 2 : netstat -an | grep ESTABLISHED
Cette commande liste toutes les connexions actuellement établies. grep
est ici utilisé pour filtrer la sortie et ne garder que les lignes où l’état est ESTABLISHED
.
Exemple 3 : Afficher toutes les connexions actives (-a
)
L’option -a
est l’une des plus fondamentales. Elle affiche toutes les connexions et tous les ports en état d’écoute, qu’ils soient de type TCP ou UDP.
netstat -a
Lorsque vous exécutez cette commande, vous verrez s’afficher une liste de colonnes : Proto
, Recv-Q
, Send-Q
, Local Address
, Foreign Address
, et State
.
Proto
: Le protocole de la connexion, par exemple TCP ou UDP.Local Address
: L’adresse IP et le numéro de port de votre machine.Foreign Address
: L’adresse IP et le numéro de port de la machine distante avec laquelle la connexion est établie.State
: L’état de la connexion (par exempleESTABLISHED
pour une connexion active ouLISTEN
pour un port en attente de connexion).
Exemple 4 : Afficher les statistiques pour les protocoles TCP et UDP (-t
, -u
)
Pour filtrer par protocole, vous pouvez utiliser les options -t
pour TCP et -u
pour UDP. Souvent, on combine ces options avec -n
pour obtenir une sortie plus rapide.
netstat -tn
Cette commande vous affichera toutes les connexions TCP. Le -n
indique à netstat
de ne pas essayer de résoudre les noms de domaine, ce qui rend la sortie instantanée. C’est une bonne pratique pour éviter les délais liés à la résolution DNS.
Exemple 5 : Afficher les ports en écoute et le processus associé (-l
, -p
)
C’est l’une des combinaisons d’options les plus utiles. L’option -l
(listen
) ne vous montrera que les ports en attente de connexions, tandis que l’option -p
(program
) vous donnera le nom du programme et son identifiant de processus (PID) qui est associé à chaque port.
netstat -tulpn
Décortiquons cette commande :
-t
: Affiche les connexions TCP.-u
: Affiche les connexions UDP.-l
: Affiche seulement les sockets en état d’écoute.-p
: Affiche l’ID du processus et le nom du programme.-n
: Affiche les adresses numériques au lieu des noms d’hôtes.
L’exécution de cette commande est un excellent moyen de vérifier quels services tournent sur votre machine. Par exemple, si un serveur web comme Nginx est en cours d’exécution, vous devriez voir une ligne avec le port 80 ou 443 en état d’écoute, avec le nom du processus Nginx à côté.
Exemple 6 : Afficher la table de routage (-r
)
La table de routage est un ensemble de règles qui indique comment les paquets de données doivent être acheminés vers leur destination. La commande netstat -r
vous permet de l’afficher.
netstat -r
La sortie vous montrera les passerelles par défaut, les chemins vers les sous-réseaux et d’autres informations cruciales pour le routage.
Exemple 6 : Afficher les statistiques par interface (-i
)
Enfin, si vous voulez des informations sur le trafic réseau passant par vos interfaces, l’option -i
est faite pour vous.
netstat -i
Cette commande vous donnera un résumé des paquets envoyés et reçus par chaque carte réseau, ainsi que le nombre d’erreurs. C’est une mine d’informations pour diagnostiquer des problèmes de performance sur le réseau.
Les principales commandes de netstat
Commande netstat | Description |
---|---|
netstat | Affiche toutes les connexions réseau actives (TCP/UDP) et les ports écoutés. |
netstat -a | Affiche toutes les connexions et tous les ports écoutés (TCP et UDP). |
netstat -n | Affiche les adresses et ports sous forme numérique, sans résolution des noms. |
netstat -t | Affiche uniquement les connexions TCP. |
netstat -u | Affiche uniquement les connexions UDP. |
netstat -l | Affiche uniquement les ports en écoute (listening). |
netstat -p | Affiche le PID et le nom du programme associé à chaque connexion. |
netstat -r | Affiche la table de routage du système. |
netstat -s | Affiche les statistiques réseau pour chaque protocole (TCP, UDP, ICMP…). |
netstat -i | Affiche les interfaces réseau et leurs statistiques. |
netstat -c | Met à jour en continu la liste des connexions. |
netstat -anp | Combine plusieurs options : tout afficher (-a ), en mode numérique (-n ) et afficher les PID/programmes (-p ). |
netstat --help | Affiche l’aide complète de netstat avec toutes les options disponibles. |
Qu’est-ce que grep
?
grep
est un utilitaire de filtrage de texte. Il recherche des motifs (patterns) au sein d’un flux de texte et renvoie seulement les lignes correspondantes. Associé à d’autres commandes comme netstat
, ps
ou journalctl
, il permet d’isoler l’information pertinente rapidement.
Il existe des variantes de grep
: egrep
pour les expressions régulières étendues et fgrep
pour la recherche littérale. Dans les distributions modernes, egrep
et fgrep
sont souvent des liens vers grep -E
et grep -F
.
La syntaxe de base est grep [options] motif [fichier]
.
Lorsqu’on l’utilise en pipeline (|
), on envoie la sortie d’une commande vers grep
. Exemple : commande | grep motif
.

Des formations informatique pour tous !
Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…
Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.
Découvrez mes formations Qui suis-je ?Options principales de grep
-i
rend la recherche insensible à la casse.-v
inverse la sélection (affiche les lignes qui ne correspondent pas).-r
recherche récursive dans les dossiers.-E
active les expressions régulières étendues.--color
met en évidence les correspondances.
Ces options servent à affiner la recherche selon le contexte.
Expressions régulières utiles
Les expressions régulières simples comme ^
pour le début de ligne, $
pour la fin, .
pour n’importe quel caractère et \d
pour un chiffre peuvent être utiles pour cibler des motifs. Par exemple, grep -E ':[0-9]{1,5}\s'
peut aider à repérer un port suivi d’un espace.
Exemples pratiques simples
Exemple 1 : netstat -tulpn | grep :80
Cette commande filtre pour ne garder que les sockets écoutant sur le port 80.
Exemple 2 : journalctl -u apache2 | grep -i error
Ici grep
met en évidence les erreurs dans les logs d’un service.
Combiner netstat
et grep
La sortie de netstat
peut être très longue, en particulier sur des serveurs très actifs. grep
permet d’aller directement à l’information recherchée sans perdre de temps. Le filtrage réduit le bruit et facilite l’action corrective.
Les commandes principales de grep
Commande grep | Description |
---|---|
grep "mot" fichier | Recherche le mot dans le fichier et affiche les lignes correspondantes. |
grep -i "mot" fichier | Recherche insensible à la casse (majuscules/minuscules). |
grep -v "mot" fichier | Affiche les lignes qui ne contiennent pas le mot. |
grep -r "mot" dossier | Recherche récursive dans tous les fichiers d’un dossier et de ses sous-dossiers. |
grep -n "mot" fichier | Affiche le numéro de ligne pour chaque ligne correspondante. |
grep -c "mot" fichier | Affiche le nombre de lignes correspondant au mot. |
grep -l "mot" fichiers* | Affiche les noms de fichiers contenant le mot. |
grep -w "mot" fichier | Recherche le mot comme mot entier, pas comme sous-chaîne. |
`grep -E « mot1 | mot2″ fichier` |
grep -o "mot" fichier | Affiche seulement les correspondances, pas la ligne entière. |
grep --color "mot" fichier | Surligne le mot trouvé dans la sortie pour plus de visibilité. |
grep -A 3 "mot" fichier | Affiche la ligne correspondante et 3 lignes après (After). |
grep -B 3 "mot" fichier | Affiche la ligne correspondante et 3 lignes avant (Before). |
grep -C 3 "mot" fichier | Affiche la ligne correspondante et 3 lignes avant et après (Context). |
Les différences entre netstat et nmap
Netstat et Nmap sont deux outils de ligne de commande essentiels, mais ils ont des objectifs et des champs d’action très différents. On peut les comparer à un médecin auscultant un patient (netstat) et à un détective qui enquête sur un suspect (nmap).
Netstat : L’analyse locale
Netstat, pour network statistics, est un outil de diagnostic local. Son objectif est de fournir des informations sur les connexions réseau actives sur l’ordinateur où il est exécuté. Il se concentre sur l’état du système d’un point de vue réseau, en répondant à des questions telles que :
- Quelles sont les connexions entrantes et sortantes sur ma machine ?
- Quels ports sont ouverts et écoutent activement les connexions ?
- Quel processus (application) utilise quel port ?
- Quelle est la table de routage de mon système ?
Netstat est utilisé pour la surveillance et le dépannage réseau interne. Il est indispensable pour vérifier si un service web est en cours d’exécution, si une application communique avec l’extérieur, ou pour identifier un processus suspect sur votre propre machine.
Nmap : Le balayage externe
Nmap, pour Network Mapper, est un outil d’exploration et d’audit de sécurité réseau. Sa principale fonction est de scanner des machines distantes sur un réseau pour en dresser une carte. Nmap utilise des paquets IP bruts pour déterminer :
- Quels hôtes (machines) sont actifs sur un réseau donné.
- Quels ports sont ouverts sur ces hôtes distants.
- Quels services (FTP, SSH, HTTP, etc.) et quelles versions de ces services sont en cours d’exécution sur les ports ouverts.
- Quel système d’exploitation tourne sur la machine cible (détection d’OS).
Nmap est utilisé par les administrateurs et les professionnels de la sécurité pour l’audit de sécurité et la cartographie de réseau. Il permet d’identifier les vulnérabilités potentielles en révélant les services exposés publiquement, les configurations par défaut non sécurisées, ou en testant la résilience d’un pare-feu.
Résumé des différences clés
Caractéristique | Netstat | Nmap |
Champ d’action | Local | Distant |
Objectif | Diagnostic et surveillance interne | Audit de sécurité et cartographie réseau |
Information fournie | Connexions, ports et processus sur la machine locale | Ports ouverts, services et OS sur une machine distante |
Nature | Utilitaire de diagnostic | Scanner de sécurité et d’exploration |
Cas pratiques d’utilisation de netstat et grep
Trouver si un port précis est utilisé
Étape 1 : Lancez sudo netstat -tulpn
pour obtenir la liste des services en écoute.
Étape 2 : Utilisez grep
pour filtrer : sudo netstat -tulpn | grep :443
. Si la commande renvoie une ligne, cela signifie qu’un service écoute sur le port 443. La colonne PID/Program name
vous indique le programme.
Vérifier si un service est en écoute
Étape 1 : Remplacez le port par le nom du service si connu, par exemple sudo netstat -tulpn | grep sshd
.
Étape 2 : Si sshd
apparaît, le service SSH est actif et le port d’écoute est indiqué.
Identifier l’adresse IP d’un client connecté
Étape 1 : Exécutez netstat -an | grep ESTABLISHED | grep :22
pour voir les connexions SSH établies.
Étape 2 : La colonne Foreign Address
montre l’adresse IP du client.
Rechercher un processus lié à une connexion
Étape 1 : sudo netstat -tulpn | grep :3306
pour MySQL.
Étape 2 : Lisez la colonne PID/Program name
et utilisez ps -p <PID> -o pid,cmd
pour obtenir la commande exacte qui a lancé le processus.
Chaînage avec autres commandes
awk
ou cut
peuvent compléter grep
si vous souhaitez extraire une colonne précise. Exemple : sudo netstat -tulpn | grep :80 | awk '{print $7}'
affiche la colonne qui contient le PID/Programme. Si vous souhaitez obtenir seulement le PID, vous pouvez combiner cut -d'/' -f1
après l’extraction.
Études de cas avancées
Détecter un port suspect occupé
Vous suspectez qu’un service inconnu occupe un port critique.
Étape 1 : sudo netstat -tulpn | grep :12345
pour repérer le port.
Étape 2 : Si le PID correspond à un binaire inconnu, notez le PID puis exécutez ps -p <PID> -o pid,uid,gid,cmd
pour plus d’informations.
Étape 3 : Inspectez les fichiers binaires et la provenance du programme. Si nécessaire, isolez la machine du réseau pour éviter toute activité malveillante.
Vérifier les connexions actives d’un serveur web
Le site web répond lentement, vous voulez voir les connexions actives.
Étape 1 : sudo netstat -anp | grep :80
pour lister les connexions vers le port 80.
Étape 2 : Trier par IP et compter les connexions : sudo netstat -anp | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
permet d’identifier si une IP effectue de nombreuses connexions simultanées.
Surveiller en temps réel
Vous voulez surveiller dynamiquement un port.
Étape 1 : Utilisez la commande watch
: watch -n 2 "sudo netstat -tulpn | grep :80"
qui exécutera la commande toutes les 2 secondes et mettra à jour l’affichage.
Créer un alias ou un script d’automatisation
Il peut être pratique de créer un alias ou un script shell qui résume régulièrement l’état de certains ports. Exemple de script check_ports.sh
:
#!/bin/bash
PORTS=(22 80 443 3306)
for P in "${PORTS[@]}"; do
echo "Port $P :"
sudo netstat -tulpn | grep ":$P" || echo "Aucun service en écoute sur $P"
done
Rendez le script exécutable puis lancez-le. Ce script est un exemple simple, détaillé étape par étape pour automatiser la vérification des ports critiques.
Exemple : Un script Bash qui alerte si un port est utilisé
Voici un script plus avancé qui envoie un e-mail ou écrit dans un log si un port devient occupé. Ce script vérifie toutes les minutes.
#!/bin/bash
PORT=8080
LOG=/var/log/port_monitor.log
while true; do
if sudo netstat -tulpn | grep -q ":$PORT"; then
echo "$(date '+%Y-%m-%d %H:%M:%S') : port $PORT occupé" >> $LOG
fi
sleep 60
done
Veillez à adapter la méthode d’alerte selon votre environnement et vos politiques.
Alternatives modernes à netstat
Certaines distributions ont migré vers les utilitaires fournis par iproute2
. netstat
reste disponible mais peut ne pas être installé par défaut. ss
est plus rapide et souvent plus précis.
Utiliser ss
ss
remplace netstat
dans de nombreuses tâches. Les options de ss
sont différentes mais les concepts sont similaires. Exemple équivalent à netstat -tulpn
: ss -tulpen
. L’usage de grep
reste identique pour filtrer.
Adapter les filtres grep
avec ss
Les commandes ss -tulpen | grep :80
fonctionnent comme avec netstat
. ss
possède des options supplémentaires pour filtrer côté socket, mais grep
reste une solution simple et portable pour text-processing.
Bonnes pratiques et pièges à éviter
Limites de netstat
netstat
ne montre pas toujours les mêmes informations en fonction des droits de l’utilisateur. Sans sudo
, la colonne PID/Program name
peut être vide. De plus, netstat
peut être plus lent que ss
sur des listes très longues.
Utiliser sudo
quand c’est nécessaire
Pour cartographier précisément les services et leurs PID, exécutez sudo netstat -tulpn
. Sans élévation, certaines informations sont cachées pour des raisons de sécurité.
Interpréter LISTEN vs ESTABLISHED
LISTEN
indique qu’un programme attend des connexions sur un port.
ESTABLISHED
signifie qu’une connexion est active entre deux machines. Pour le dépannage, distinguez ces états pour comprendre si le problème vient d’un service qui n’écoute pas ou d’une connexion qui n’est pas établie correctement.
Pièges courants avec grep
Grep peut renvoyer des faux positifs si le motif est trop vague. Par exemple, grep 80
peut capturer des occurrences de 8080 ou d’autres contextes. Il est conseillé d’utiliser des motifs précis, par exemple grep ':80\>'
ou grep -E ':[[:digit:]]{1,5}\s'
selon le besoin.
Performance et machine 8 Go de RAM
Sur une machine disposant de 8 Go de RAM, netstat
et grep
consomment très peu de mémoire. Les problèmes de performance apparaissent généralement lorsque la sortie est redirigée vers des opérations lourdes (analyse massive de logs, tri/tri répétitif). Pour un usage courant, 8 Go est pleinement suffisant. Si vous prévoyez d’analyser des millions de lignes de logs, privilégiez des outils optimisés (awk, perl, outils dédiés) ou effectuez l’analyse par lots.
Exercices pratiques
Vérifier si MySQL écoute sur le port 3306
Étape 1 : Exécutez sudo netstat -tulpn | grep :3306
.
Étape 2 : Si une ligne apparaît, examinez la colonne PID/Program name
.
Étape 3 : Utilisez ps -p <PID> -o pid,cmd
pour avoir le chemin complet du binaire. Cette méthode vous permet de confirmer que MySQL (ou MariaDB) est bien celui qui écoute.
Trouver toutes les connexions SSH actives
Étape 1 : netstat -an | grep :22 | grep ESTABLISHED
liste les connexions SSH établies.
Étape 2 : Pour obtenir les IP clients en nombre, enchaînez : netstat -an | grep :22 | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
.
Lister uniquement les processus liés à Apache/Nginx
Étape 1 : sudo netstat -tulpn | grep :80
pour le port 80.
Étape 2 : Filtrez par le nom du programme : sudo netstat -tulpn | grep -E 'apache2|nginx'
.
Surveiller l’ouverture/fermeture d’un port
Étape 1 : watch -n 1 "sudo netstat -tulpn | grep :8080"
actualise la vue toutes les secondes.
Étape 2 : Remplacez la commande watch
par un script si vous avez besoin d’historiser les changements.
Vérifier les connexions réseau actives
Tapez dans le terminal :
netstat -an
-a
: affiche toutes les connexions et les ports en écoute.-n
: affiche les adresses et ports sous forme numérique, sans tenter de résoudre les noms.
Vous verrez une liste avec :
Proto Recv-Q Send-Q Local Address Foreign Address State
TCP 0 0 192.168.1.10:22 192.168.1.5:50321 ESTABLISHED
Local Address
: ton IP + port local.Foreign Address
: IP distante + port.State
: état de la connexion (ESTABLISHED
,LISTEN
,CLOSE_WAIT
, etc.).
Vérifier quels ports sont à l’écoute
Pour savoir quels services écoutent sur votre machine :
netstat -tuln
-t
: TCP-u
: UDP-l
: écoute seulement-n
: numérique
Exemple de sortie :
Proto Local Address Foreign Address State
tcp 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 127.0.0.1:3306 0.0.0.0:* LISTEN
Ici, ça montre que votre serveur web (port 80) et votre base MySQL (3306) sont bien actifs et prêts à recevoir des connexions.
Filtrer pour un port précis
Si vous voulez vérifier un port spécifique (ex. 80 pour un serveur web) :
netstat -an | grep 80
Surveiller les connexions en temps réel
Vous pouvez combiner avec watch
pour suivre le trafic :
watch -n 2 "netstat -an"
Met à jour toutes les 2 secondes pour voir si de nouvelles connexions apparaissent.
Alternatives plus modernes
ss -tuln
: similaire à netstat mais plus rapide et détaillé.lsof -i
: montre les processus associés à chaque connexion réseau.nmap
: scanner ton réseau pour vérifier les ports ouverts (externe ou interne).
Voici une commande complète que vous pouvez utiliser sur votre Mac pour avoir un aperçu clair des ports ouverts et des connexions actives sur votre réseau :
echo "=== Ports en écoute (services locaux) ===" && sudo lsof -i -P -n | grep LISTEN && \
echo "=== Connexions actives ===" && netstat -an | grep ESTABLISHED
Explications :
sudo lsof -i -P -n | grep LISTEN
- Liste tous les services locaux qui écoutent sur un port.
-P
: affiche les numéros de port au lieu des noms.-n
: affiche les adresses IP au lieu des noms d’hôte.LISTEN
: ne montre que les ports ouverts pour les connexions entrantes.
netstat -an | grep ESTABLISHED
- Affiche toutes les connexions actives vers ou depuis ta machine.
- Tu vois quelle IP est connectée à quel port et l’état de la connexion.
Ce guide a couvert les points essentiels pour maîtriser netstat
et grep
. Vous savez maintenant ce qu’est netstat
, pourquoi il est utile, comment l’installer, et comment le combiner avec grep
pour filtrer les sorties. Vous avez découvert les options principales, des cas pratiques pour dépanner un service, des scripts simples pour automatiser des vérifications, et des alternatives modernes comme ss
. Enfin, vous avez des exercices concrets pour vous entraîner.
En résumé, netstat
et grep
forment une paire puissante pour l’analyse réseau. netstat
donne la vision d’ensemble des sockets et des services et grep
affine cette vue pour isoler l’information dont vous avez besoin.
Sur une machine avec 8 Go de RAM, ces outils fonctionnent confortablement pour la plupart des tâches d’administration et de dépannage. Pour des analyses massives, pensez à compléter avec des outils adaptés ou à automatiser le traitement par lots.