Introducción
En este proyecto, aprenderás a crear un script de Zsh que monitorice el estado de la comunicación de red de un puerto específico. El script contará el número de paquetes de datos transmitidos y recibidos en el puerto especificado dentro de un plazo de 3 segundos.
👀 Vista previa
## Ejemplo
$ sh /home/labex/project/netcheck.sh 22
Paquetes: 2
🎯 Tareas
En este proyecto, aprenderás:
- Cómo crear un script de Zsh que acepte un número de puerto como parámetro de entrada
- Cómo usar el comando
tcpdumppara capturar y contar el número de paquetes para el puerto especificado - Cómo establecer un tiempo de espera de 3 segundos para la ejecución del script usando el comando
timeout - Cómo mostrar el recuento de paquetes en un formato amigable para el usuario
🏆 Logros
Después de completar este proyecto, podrás:
- Desarrollar un script que pueda monitorizar el estado de la comunicación de red de un puerto específico
- Comprender cómo usar comandos comunes de Linux como
tcpdumpytimeouten un script de Zsh - Adquirir experiencia en la escritura y prueba de scripts de shell para resolver problemas prácticos
Crea el script netcheck.sh
En este paso, crearás el script netcheck.sh que contará el número de paquetes transmitidos y recibidos para un puerto especificado dentro de un plazo de 3 segundos.
- Abre un editor de texto y crea un nuevo archivo llamado
netcheck.shen el directorio/home/labex/project. - Agrega el siguiente código al archivo
netcheck.sh:
#!/bin/zsh
## Este script cuenta el número de paquetes transmitidos y recibidos para un puerto especificado dentro de un plazo de 3 segundos usando tcpdump.
## Verifica si se proporciona el argumento del número de puerto
if [ $## -eq 0 ]; then
echo "Por favor, proporcione el número de puerto a contar como argumento."
exit 1
fi
## Obtiene el número de puerto de entrada
puerto=$1
## Utiliza el comando timeout para establecer un tiempo de espera de 3 segundos y utiliza tcpdump para contar el número de paquetes para el puerto especificado
paquetes=$(timeout 3 tcpdump -c 0 -i any "puerto $puerto" 2> /dev/null | wc -l)
## Muestra el recuento de paquetes
echo "Paquetes: $paquetes"
- Guarda el archivo
netcheck.sh.
Prueba el script netcheck.sh
En este paso, probarás el script netcheck.sh para asegurarte de que funcione como se espera.
- Abre una terminal y navega hasta el directorio
/home/labex/project. - Ejecuta el script
netcheck.shcon el número de puerto22como argumento:
sh /home/labex/project/netcheck.sh 22
- El script debe mostrar el número de paquetes transmitidos y recibidos en el puerto
22dentro del plazo de 3 segundos, por ejemplo:
Paquetes: 2
- Intenta ejecutar el script con diferentes números de puerto para asegurarte de que funcione correctamente.
Comprende el script netcheck.sh
En este paso, entenderás el código del script netcheck.sh.
- El script comienza con una línea de shebang
#!/bin/zshpara especificar que debe ejecutarse utilizando el shell Zsh. - El script verifica si se proporciona un argumento de número de puerto. Si no es así, muestra un mensaje de error y sale.
- El script asigna el número de puerto proporcionado a la variable
puerto. - El script utiliza el comando
timeoutpara establecer un tiempo de espera de 3 segundos y luego utiliza el comandotcpdumppara contar el número de paquetes para el puerto especificado. La opción-c 0le dice atcpdumpque capture todos los paquetes, y el filtro"puerto $puerto"asegura que solo se cuenten los paquetes para el puerto especificado. - El script captura la salida del comando
tcpdumpy cuenta el número de líneas usandowc -l, lo que da el número total de paquetes. - Finalmente, el script muestra el recuento de paquetes usando
echo "Paquetes: $paquetes".
¡Felicitaciones! Has creado y probado con éxito el script netcheck.sh para monitorear el estado de la comunicación de red. Siéntase libre de explorar y modificar el script más para adaptarlo a sus necesidades.
Resumen
¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.



