Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Exercício 04 monitoramento de disco

Olá pessoas, sobre o exercício 04 vou estar postando aqui a solução que criei para verificar, o intuito é saber se existiria uma forma mais simples de resolver essa questão. Desde já obrigado!

#!/bin/bash

PCENT_USED=$(df -h / --output=pcent | tail -n 1) #Pegando apenas o valor da porcentagem do uso na partição /
IFS='%' read -ra USED_VALUE <<< "$PCENT_USED" #Realizando a separação da string passando a porcentagem como o parâmetro de separação e armazendo dentro do array used_value
INT_USED_VALUE=$((USED_VALUE)) #Convertendo de string para inteiro 

if [ $INT_USED_VALUE -gt 85 ]; then
    echo "Armazenamento em nível crítico!"
elif [ $INT_USED_VALUE -ge 60 ]; then
    echo "Armazenamento em nível de alerta!"
else
    echo "Armazenamento em nível neutro!"
fi
1 resposta
solução!

Olá, David!

Seu script para monitorar o uso de disco está bem estruturado e funcional. Há sempre maneiras de simplificar ou otimizar um código, vou sugerir algumas melhorias que podem deixar seu script um pouco mais enxuto:

  1. Uso do awk para simplificação: Você pode usar o awk para extrair diretamente o valor numérico da porcentagem, eliminando a necessidade de usar IFS e read.

  2. Remoção de variáveis desnecessárias: Como você está apenas usando a variável INT_USED_VALUE uma vez, pode simplificar o script eliminando-a.

Aqui está uma versão simplificada do seu script:

#!/bin/bash

# Extrai diretamente o valor numérico da porcentagem usando awk
USED_VALUE=$(df -h / --output=pcent | tail -n 1 | awk '{print $1}' | tr -d '%')

if [ $USED_VALUE -gt 85 ]; then
    echo "Armazenamento em nível crítico!"
elif [ $USED_VALUE -ge 60 ]; then
    echo "Armazenamento em nível de alerta!"
else
    echo "Armazenamento em nível neutro!"
fi

Essa versão elimina a necessidade de manipulação de strings com IFS e read, simplificando a lógica de extração do valor.

Bons estudos!