Estadísticas de Paquetes de Datos de Red

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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 tcpdump para 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 tcpdump y timeout en un script de Zsh
  • Adquirir experiencia en la escritura y prueba de scripts de shell para resolver problemas prácticos

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{{"Estadísticas de Paquetes de Datos de Red"}} linux/wc -.-> lab-301481{{"Estadísticas de Paquetes de Datos de Red"}} linux/cd -.-> lab-301481{{"Estadísticas de Paquetes de Datos de Red"}} linux/ssh -.-> lab-301481{{"Estadísticas de Paquetes de Datos de Red"}} linux/netstat -.-> lab-301481{{"Estadísticas de Paquetes de Datos de Red"}} end

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.

  1. Abre un editor de texto y crea un nuevo archivo llamado netcheck.sh en el directorio /home/labex/project.
  2. 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"
  1. 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.

  1. Abre una terminal y navega hasta el directorio /home/labex/project.
  2. Ejecuta el script netcheck.sh con el número de puerto 22 como argumento:
sh /home/labex/project/netcheck.sh 22
  1. El script debe mostrar el número de paquetes transmitidos y recibidos en el puerto 22 dentro del plazo de 3 segundos, por ejemplo:
Paquetes: 2
  1. Intenta ejecutar el script con diferentes números de puerto para asegurarte de que funcione correctamente.

Entiende el script netcheck.sh

En este paso, entenderás el código del script netcheck.sh.

  1. El script comienza con una línea de shebang #!/bin/zsh para especificar que debe ejecutarse utilizando el shell Zsh.
  2. El script verifica si se proporciona un argumento de número de puerto. Si no es así, muestra un mensaje de error y sale.
  3. El script asigna el número de puerto proporcionado a la variable puerto.
  4. El script utiliza el comando timeout para establecer un tiempo de espera de 3 segundos y luego utiliza el comando tcpdump para contar el número de paquetes para el puerto especificado. La opción -c 0 le dice a tcpdump que capture todos los paquetes, y el filtro "puerto $puerto" asegura que solo se cuenten los paquetes para el puerto especificado.
  5. El script captura la salida del comando tcpdump y cuenta el número de líneas usando wc -l, lo que da el número total de paquetes.
  6. 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.

✨ Revisar Solución y Practicar

Resumen

¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.