bash script que destacará a linha máxima de uso do disco na saída

2

Estou escrevendo o script bash que mostrará o status de uso do disco. Se o tamanho do sistema de arquivos for usado em mais de 95%, essa linha deve ser destacada apenas uma vez, como abaixo. Basicamente, quero que meu script funcione como o comando df -h , mas com o máximo de uso do disco. E outros sistemas de arquivos também devem estar na saída. Aqui está o meu script.

readarray -t disk <<< "$(df -h | awk '{print $5}' | tail -n +2 | tr -d %)"
  for i in "${disk[@]}"
  do
          if [ $i -gt 95 ]
            then
                df -h | grep --color -E "$i%|$" 
          fi
 done

df -h

Tamanho do sistema de arquivos usado Uso de disponibilidade% montado no
devtmpfs 3.9G 0 3.9G 0% / dev
tmpfs 3.9G 140M 3.8G 4% / dev / shm
tmpfs 3.9G 1.8M 3.9G 1% / run
tmpfs 3.9G 0 3.9G 0% / sys / fs / cgroup
/ dev / mapeador / centos-raiz 128G 107G 15G 96% /
tmpfs 3.9G 15M 3.9G 1% / tmp
/ dev / sda1 453M 179M 247M 42% / boot
tmpfs 789M 20K 789M 1% / run / user / 42
tmpfs 789M 60K 789M 1% / run / user / 1000
/ dev / mapeador / centos-home 100G 85G 16G 96% / mnt

    
por BDN 25.09.2017 / 04:14

1 resposta

1

Isso está funcionando para mim. Você também pode colorir a saída, se quiser.

#! /bin/bash -
TXT_BLD=$(tput bold)
TXT_RST=$(tput sgr0)
IFS= mapfile -t disk < <(df -h | tail -n +2)
for line in "${disk[@]}"; do
    USAGE=$(echo $line | awk '{print $5/1}')
    if [[ "$USAGE" -gt '95' ]]; then
        echo "${TXT_BLD}$line${TXT_RST}"
    else
        echo "$line"
    fi
done

Isso fará com que a linha amarela seja maior que 85% e vermelha se maior que 95%:

#! /bin/bash -
TXT_BLD=$(tput bold)
TXT_RED=$(tput setaf 1)
TXT_YLW=$(tput setaf 3)
TXT_WARN="${TXT_BLD}${TXT_YLW}"
TXT_ERR="${TXT_BLD}${TXT_RED}"
TXT_RST=$(tput sgr0)
IFS= mapfile -t disk < <(df -h | tail -n +2)
for line in "${disk[@]}"; do
    USAGE=$(echo $line | awk '{print $5/1}')
    if [[ "$USAGE" -gt '95' ]]; then
        echo "${TXT_ERR}$line${TXT_RST}"
    elif [[ "$USAGE" -gt '85' ]]; then
        echo "${TXT_WARN}$line${TXT_RST}"
    else
        echo "$line"
    fi
done
    
por 25.09.2017 / 04:26