Estatísticas de Pacotes de Dados de Rede

LinuxBeginner
Pratique Agora

Introdução

Neste projeto, você aprenderá como criar um script Zsh que monitora o status da comunicação de rede de uma porta específica. O script contará o número de pacotes de dados transmitidos e recebidos na porta especificada dentro de um período de 3 segundos.

👀 Pré-visualização

## Exemplo
$ sh /home/labex/project/netcheck.sh 22
Pacotes: 2

🎯 Tarefas

Neste projeto, você aprenderá:

  • Como criar um script Zsh que aceita um número de porta como um parâmetro de entrada
  • Como usar o comando tcpdump para capturar e contar o número de pacotes para a porta especificada
  • Como definir um tempo limite (timeout) de 3 segundos para a execução do script usando o comando timeout
  • Como exibir a contagem de pacotes em um formato amigável ao usuário

🏆 Conquistas

Após concluir este projeto, você será capaz de:

  • Desenvolver um script que pode monitorar o status da comunicação de rede de uma porta específica
  • Entender como usar comandos Linux comuns como tcpdump e timeout em um script Zsh
  • Ganhar experiência na escrita e teste de scripts de shell para resolver problemas práticos

Criar o Script netcheck.sh

Nesta etapa, você criará o script netcheck.sh que contará o número de pacotes transmitidos e recebidos para uma porta especificada dentro de um período de 3 segundos.

  1. Abra um editor de texto e crie um novo arquivo chamado netcheck.sh no diretório /home/labex/project.
  2. Adicione o seguinte código ao arquivo netcheck.sh:
#!/bin/zsh

## Este script conta o número de pacotes transmitidos e recebidos para uma porta especificada dentro de um período de 3 segundos usando tcpdump.

## Verifique se o argumento do número da porta foi fornecido
if [ $## -eq 0 ]; then
  echo "Por favor, forneça o número da porta a ser contado como um argumento."
  exit 1
fi

## Obtenha o número da porta de entrada
port=$1

## Use o comando timeout para definir um tempo limite (timeout) de 3 segundos e use tcpdump para contar o número de pacotes para a porta especificada
packages=$(timeout 3 tcpdump -c 0 -i any "port $port" 2> /dev/null | wc -l)

## Exiba a contagem de pacotes
echo "Pacotes: $packages"
  1. Salve o arquivo netcheck.sh.

Testar o Script netcheck.sh

Nesta etapa, você testará o script netcheck.sh para garantir que ele esteja funcionando conforme o esperado.

  1. Abra um terminal e navegue até o diretório /home/labex/project.
  2. Execute o script netcheck.sh com o número da porta 22 como um argumento:
sh /home/labex/project/netcheck.sh 22
  1. O script deve exibir o número de pacotes transmitidos e recebidos na porta 22 dentro do período de 3 segundos, por exemplo:
Pacotes: 2
  1. Tente executar o script com diferentes números de porta para garantir que ele funcione corretamente.

Entender o Script netcheck.sh

Nesta etapa, você entenderá o código no script netcheck.sh.

  1. O script começa com uma linha shebang #!/bin/zsh para especificar que ele deve ser executado usando o shell Zsh.
  2. O script verifica se um argumento de número de porta foi fornecido. Caso contrário, ele exibe uma mensagem de erro e sai.
  3. O script atribui o número da porta fornecido à variável port.
  4. O script usa o comando timeout para definir um tempo limite (timeout) de 3 segundos e, em seguida, usa o comando tcpdump para contar o número de pacotes para a porta especificada. A opção -c 0 diz ao tcpdump para capturar todos os pacotes, e o filtro "port $port" garante que apenas os pacotes para a porta especificada sejam contados.
  5. O script captura a saída do comando tcpdump e conta o número de linhas usando wc -l, o que dá o número total de pacotes.
  6. Finalmente, o script exibe a contagem de pacotes usando echo "Pacotes: $packages".

Parabéns! Você criou e testou com sucesso o script netcheck.sh para monitorar o status da comunicação de rede. Sinta-se à vontade para explorar e modificar o script para atender às suas necessidades.

Resumo

Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.

✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar