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
tcpdumppour 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
tcpdumpettimeoutdans un script Zsh - Gagner de l'expérience dans l'écriture et le test de scripts shell pour résoudre des problèmes pratiques
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.
- Ouvrez un éditeur de texte et créez un nouveau fichier nommé
netcheck.shdans le répertoire/home/labex/project. - 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"
- 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.
- Ouvrez un terminal et accédez au répertoire
/home/labex/project. - Exécutez le script
netcheck.shavec le numéro de port22en tant qu'argument :
sh /home/labex/project/netcheck.sh 22
- Le script devrait afficher le nombre de paquets transmis et reçus sur le port
22dans la période de 3 secondes, par exemple :
Paquets : 2
- 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.
- Le script commence par une ligne de shebang
#!/bin/zshpour spécifier qu'il doit être exécuté à l'aide du shell Zsh. - Le script vérifie si un argument de numéro de port est fourni. Sinon, il affiche un message d'erreur et sort.
- Le script attribue le numéro de port fourni à la variable
port. - Le script utilise la commande
timeoutpour définir un délai d'attente de 3 secondes puis utilise la commandetcpdumppour compter le nombre de paquets pour le port spécifié. L'option-c 0indique àtcpdumpde capturer tous les paquets, et le filtre"port $port"assure que seuls les paquets pour le port spécifié sont comptabilisés. - Le script capture la sortie de la commande
tcpdumpet compte le nombre de lignes à l'aide dewc -l, ce qui donne le nombre total de paquets. - 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.
Résumé
Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.



