Statistiques de paquets de données réseau

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce projet, vous allez apprendre à créer un script Zsh qui surveille l'état de la communication réseau d'un port spécifique. Le script comptabilisera le nombre de paquets de données transmis et reçus sur le port spécifié dans une période de 3 secondes.

👀 Aperçu

## Exemple
$ sh /home/labex/project/netcheck.sh 22
Paquets : 2

🎯 Tâches

Dans ce projet, vous allez apprendre :

  • Comment créer un script Zsh qui accepte un numéro de port en tant que paramètre d'entrée
  • Comment utiliser la commande tcpdump pour capturer et compter le nombre de paquets pour le port spécifié
  • Comment définir un délai d'attente de 3 secondes pour l'exécution du script à l'aide de la commande timeout
  • Comment afficher le compte des paquets dans un format convivial pour l'utilisateur

🏆 Réalisations

Après avoir terminé ce projet, vous serez capable de :

  • Développer un script qui peut surveiller l'état de la communication réseau d'un port spécifique
  • Comprendre comment utiliser des commandes Linux courantes telles que tcpdump et timeout dans un script Zsh
  • Gagner de l'expérience dans l'écriture et le test de scripts shell pour résoudre des problèmes pratiques

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/wc("Text Counting") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/RemoteAccessandNetworkingGroup -.-> linux/ssh("Secure Connecting") linux/RemoteAccessandNetworkingGroup -.-> linux/netstat("Network Monitoring") subgraph Lab Skills linux/echo -.-> lab-301481{{"Statistiques de paquets de données réseau"}} linux/wc -.-> lab-301481{{"Statistiques de paquets de données réseau"}} linux/cd -.-> lab-301481{{"Statistiques de paquets de données réseau"}} linux/ssh -.-> lab-301481{{"Statistiques de paquets de données réseau"}} linux/netstat -.-> lab-301481{{"Statistiques de paquets de données réseau"}} end

Créer le script netcheck.sh

Dans cette étape, vous allez créer le script netcheck.sh qui comptabilisera le nombre de paquets transmis et reçus pour un port spécifié dans une période de 3 secondes.

  1. Ouvrez un éditeur de texte et créez un nouveau fichier nommé netcheck.sh dans le répertoire /home/labex/project.
  2. Ajoutez le code suivant au fichier netcheck.sh :
#!/bin/zsh

## Ce script compte le nombre de paquets transmis et reçus pour un port spécifié dans une période de 3 secondes à l'aide de tcpdump.

## Vérifiez si l'argument de numéro de port est fourni
if [ $## -eq 0 ]; then
  echo "Veuillez fournir le numéro de port à compter en tant qu'argument."
  exit 1
fi

## Obtenez le numéro de port d'entrée
port=$1

## Utilisez la commande timeout pour définir un délai d'attente de 3 secondes et utilisez tcpdump pour compter le nombre de paquets pour le port spécifié
packages=$(timeout 3 tcpdump -c 0 -i any "port $port" 2> /dev/null | wc -l)

## Affichez le compte des paquets
echo "Paquets : $packages"
  1. Enregistrez le fichier netcheck.sh.

Tester le script netcheck.sh

Dans cette étape, vous allez tester le script netcheck.sh pour vous assurer qu'il fonctionne comme prévu.

  1. Ouvrez un terminal et accédez au répertoire /home/labex/project.
  2. Exécutez le script netcheck.sh avec le numéro de port 22 en tant qu'argument :
sh /home/labex/project/netcheck.sh 22
  1. Le script devrait afficher le nombre de paquets transmis et reçus sur le port 22 dans la période de 3 secondes, par exemple :
Paquets : 2
  1. Essayez d'exécuter le script avec différents numéros de port pour vous assurer qu'il fonctionne correctement.

Comprendre le script netcheck.sh

Dans cette étape, vous allez comprendre le code du script netcheck.sh.

  1. Le script commence par une ligne de shebang #!/bin/zsh pour spécifier qu'il doit être exécuté à l'aide du shell Zsh.
  2. Le script vérifie si un argument de numéro de port est fourni. Sinon, il affiche un message d'erreur et sort.
  3. Le script attribue le numéro de port fourni à la variable port.
  4. Le script utilise la commande timeout pour définir un délai d'attente de 3 secondes puis utilise la commande tcpdump pour compter le nombre de paquets pour le port spécifié. L'option -c 0 indique à tcpdump de capturer tous les paquets, et le filtre "port $port" assure que seuls les paquets pour le port spécifié sont comptabilisés.
  5. Le script capture la sortie de la commande tcpdump et compte le nombre de lignes à l'aide de wc -l, ce qui donne le nombre total de paquets.
  6. Enfin, le script affiche le compte des paquets à l'aide de echo "Paquets : $packages".

Félicitations! Vous avez réussi à créer et tester le script netcheck.sh pour surveiller l'état de la communication réseau. N'hésitez pas à explorer et modifier le script plus avant pour répondre à vos besoins.

✨ Vérifier la solution et pratiquer

Sommaire

Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.