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
tcpdumppara 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
tcpdumpetimeoutem 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.
- Abra um editor de texto e crie um novo arquivo chamado
netcheck.shno diretório/home/labex/project. - 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"
- 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.
- Abra um terminal e navegue até o diretório
/home/labex/project. - Execute o script
netcheck.shcom o número da porta22como um argumento:
sh /home/labex/project/netcheck.sh 22
- O script deve exibir o número de pacotes transmitidos e recebidos na porta
22dentro do período de 3 segundos, por exemplo:
Pacotes: 2
- 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.
- O script começa com uma linha shebang
#!/bin/zshpara especificar que ele deve ser executado usando o shell Zsh. - O script verifica se um argumento de número de porta foi fornecido. Caso contrário, ele exibe uma mensagem de erro e sai.
- O script atribui o número da porta fornecido à variável
port. - O script usa o comando
timeoutpara definir um tempo limite (timeout) de 3 segundos e, em seguida, usa o comandotcpdumppara contar o número de pacotes para a porta especificada. A opção-c 0diz aotcpdumppara capturar todos os pacotes, e o filtro"port $port"garante que apenas os pacotes para a porta especificada sejam contados. - O script captura a saída do comando
tcpdumpe conta o número de linhas usandowc -l, o que dá o número total de pacotes. - 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.



