1
resposta

[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"
1 resposta

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