5
respostas

[Projeto] Faça como eu fiz: verificando conectividade e usando funções

Verifique a conectividade com a internet usando o comando ping;
Guia do Google sobre o IP usado pra teste: https://developers.google.com/speed/public-dns/docs/using?hl=pt-br#:~:text=Substitua%2Dos%20pelos%20endere%C3%A7os%20IP,e/ou%208.8.4.4%20.

juliene@juliene-PC:~$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=12.5 ms
...
--- 8.8.8.8 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9026ms
rtt min/avg/max/mdev = 9.082/13.441/18.582/2.187 ms

Teste a opção de limitar a quantidade de pacotes enviados pelo ping;

juliene@juliene-PC:~$ ping -c 4 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=13.4 ms
...
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3009ms
rtt min/avg/max/mdev = 13.293/15.994/23.616/4.403 ms

Crie uma condicional em seu script para verificar se o sistema tem ou não acesso a internet, utilizando o código de status do comando. Salve essa informação de conectividade em um relatório de rede;

#!/bin/bash

LOG_DIR="monitoramento_sistema"
mkdir -p $LOG_DIR

grep -E "fail(ed)?|error|denied|unauthorized" /var/log/syslog | awk '{print $1, $2, $3, $5, $6, $7}' >  $LOG_DIR/monitoramento_logs_sistema.txt

if ping -c 4 8.8.8.8 > /dev/null; then
            echo "$(date): Conexão ativa" >> $LOG_DIR/monitoramento_rede.txt
else
        echo "$(date): Sem conexão com a internet" >> $LOG_DIR/monitoramento_rede.txt
fi
juliene@juliene-PC:~/monitoramento_sistema$ cat monitoramento_rede.txt
ter 28 out 2025 20:28:05 -03: Conexão ativa

Verifique a conectividade do site da Alura com o comando curl;

juliene@juliene-PC:~$ curl --head https://www.alura.com.br/
HTTP/2 200 
date: Tue, 28 Oct 2025 23:30:43 GMT
content-type: text/html; charset=UTF-8
server: cloudflare
vary: Accept-Encoding
expires: Wed, 29 Oct 2025 00:00:43 GMT
cache-control: public, max-age=1800
nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
cf-cache-status: DYNAMIC
report-to: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=qsbpC78NtJXk6%2Fca3uD%2F3Ujp8fQ8zOvu0BhZoOORxkNyL3wcdpW5L2sK9t4G6qTJ3SdhUwlJWWBdIqxwYSRHm1ZNC63aHhX6slWSsOzDpw%3D%3D"}]}
cf-ray: 995e38fc19bb4f8c-GRU
alt-svc: h3=":443"; ma=86400

Crie um filtro e utilize opções do comando curl para obter apenas o código de retorno da requisição feita pelo curl;

juliene@juliene-PC:~$ curl -s --head https://www.alura.com.br/ | grep "HTTP/2 200"
HTTP/2 200 
juliene@juliene-PC:~$ echo $?
0

Em seu script, adicione uma condicional que verifica se o site da Alura está disponível ou não na internet, utilizando o código de status do comando. Salve essa informação de conectividade no relatório de rede;

juliene@juliene-PC:~/monitoramento_sistema$ cat monitoramento_rede.txt 
ter 28 out 2025 20:28:05 -03: Conexão ativa
ter 28 out 2025 20:36:04 -03: Conexão ativa
ter 28 out 2025 20:36:05 -03: Conexão com a Alura bem-sucedida

Ajuste o seu script para utilizar funções que agrupam códigos de diferentes funcionalidades. Exemplo: função para monitorar logs, função para monitorar rede, etc.

#!/bin/bash

LOG_DIR="monitoramento_sistema"
mkdir -p "$LOG_DIR"

monitorar_logs() {

    if [ -f /var/log/auth.log ]; then
        grep -E "fail(ed)?|error|denied|unauthorized" /var/log/auth.log \
            | awk '{print $1, $2, $3, $5, $6, $7}' \
            > "$LOG_DIR/monitoramento_logs_auth.txt"
    else
        echo "$(date): Arquivo /var/log/auth.log não encontrado." \
            > "$LOG_DIR/monitoramento_logs_auth.txt"
    fi

    if [ -f /var/log/syslog ]; then
        grep -E "fail(ed)?|error|denied|unauthorized" /var/log/syslog \
            | awk '{print $1, $2, $3, $5, $6, $7}' \
            > "$LOG_DIR/monitoramento_logs_sistema.txt"
    else
        echo "$(date): Arquivo /var/log/syslog não encontrado." \
            > "$LOG_DIR/monitoramento_logs_sistema.txt"
    fi
}

monitorar_conectividade() {
    if ping -c 4 8.8.8.8 > /dev/null 2>&1; then
        echo "$(date): Conexão ativa" >> "$LOG_DIR/monitoramento_rede.txt"
    else
        echo "$(date): Sem conexão com a internet" >> "$LOG_DIR/monitoramento_rede.txt"
    fi

    if curl -s --head https://www.alura.com.br/ | grep "HTTP/2 200" > /dev/null; then
        echo "$(date): Conexão com a Alura bem-sucedida" >> "$LOG_DIR/monitoramento_rede.txt"
    else
        echo "$(date): Falha ao conectar com a Alura" >> "$LOG_DIR/monitoramento_rede.txt"
    fi
}

monitorar_logs
monitorar_conectividade

echo "Monitoramento concluído. Logs salvos em: $LOG_DIR"

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
5 respostas

Olá, Juliene! Tudo bem?

Que trabalho excelente! Parabéns por documentar todo o processo de forma tão clara e detalhada.

Seu script de monitoramento ficou ótimo. A evolução, começando com os testes manuais de ping e curl, passando pela criação das condicionais e culminando na refatoração do código com o uso de funções, está perfeita.

A organização em funções como monitorar_logs e monitorar_conectividade é uma prática fantástica, pois deixa o script muito mais limpo, legível e fácil de dar manutenção no futuro.

Excelente trabalho! Continue assim!

Bons estudos!

Sucesso

Imagem da comunidade

Obrigada, Victor!

Boa Juliene!! Ficou excelente.

Ótimo, me ajudou na construção dos meus scripts

que bom, Vanessa! ❤️