Erro em script de checagem de espaço em disco

1. Erro em script de checagem de espaço em disco

Carlos Valente
BraveDOG

(usa Ubuntu)

Enviado em 26/11/2018 - 14:23h

Olá amigos, estou com problemas com o script abaixo:


Alert=90
Status=False
Mensagem=""

df -H | grep -vE "^Filesystem|tmpfs|cdrom" | awk '{print $5 " " $6}' | while read -r output ; do
used=$(echo "$output" | awk '{ print $1}' | cut -d'%' -f1)
partition=$(echo "$output" | awk '{ print $2 }' )
if [ "$used" -ge $Alert ]; then
Status=$(True)
Mensagem=$($Mensagem "<pre>A partição <b>$partition</b> está usando $used% at $(date). </pre>\n")
fi
echo $Status ####### Show True here
done

echo "=============="
echo "$Status" ####### Show False here
echo "=============="
exit 1


Primeiro o conteúdo da variável $Status, ao final do Do While, não muda seu valor e está dando também nas linhas 16 e 17 que corresponde a essa parte do código:
     
Status=$(True)
Mensagem=$($Mensagem "<pre>A partição <b>$partition</b> está usando $used% at $(date). </pre>\n")



./checkspace.sh: 16: ./checkspace.sh: True: not found
./checkspace.sh: 17: ./checkspace.sh: <pre>A partição <b>/snap/core/4917</b> está usando 100% at Mon Nov 26 16:18:19 UTC 2018. </pre>\n: not found



  


2. Re: Erro em script de checagem de espaço em disco

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 26/11/2018 - 14:32h

Tenho este script que faz esse monitoramento, pode utilizar direto ou usar para modificar o seu...

* Na função alerta altera para o que desejar que o script faça, no meu caso chamava outro para enviar um email...


#!/bin/bash
LOG=/tmp/usohd.txt
#-----------------------------------------------------------------------
function alerta() {
. /scripts/EnviaEmail/ConfEmail
ASSUNTO="VERIFICAR HD `hostname`"
MENSAGEM=`cat $LOG`
HOST="`hostname`"
Email
}

function monitor() {
touch /dev/null > $LOG
USO=`df -h $HD | tail -1 | awk '{print $5}'| sed "s/%//g"`
MONT=`df -h $HD | tail -1 | awk '{print $6}'`
if [ "$USO" -ge "$TMAX" ]; then
echo "$HD "$MONT" ESTA COM "$USO"% DE USO! VERIFICAR!!!" >> $LOG
alerta
else
rm $LOG
fi
}
#-----------------------------------------------------------------------
HD=/dev/sdb3
TMAX=95
monitor
#-----------------------------------------------------------------------
HD=/dev/sda1
TMAX=90
monitor



3. Re: Erro em script de checagem de espaço em disco

Carlos Valente
BraveDOG

(usa Ubuntu)

Enviado em 26/11/2018 - 14:44h

Olá Williamm,

Preciso fazer um loop, para chegar vários discos, esse só checa um, certo ??

Williamm escreveu:

Tenho este script que faz esse monitoramento, pode utilizar direto ou usar para modificar o seu...

* Na função alerta altera para o que desejar que o script faça, no meu caso chamava outro para enviar um email...


#!/bin/bash
LOG=/tmp/usohd.txt
#-----------------------------------------------------------------------
function alerta() {
. /scripts/EnviaEmail/ConfEmail
ASSUNTO="VERIFICAR HD `hostname`"
MENSAGEM=`cat $LOG`
HOST="`hostname`"
Email
}

function monitor() {
touch /dev/null > $LOG
USO=`df -h $HD | tail -1 | awk '{print $5}'| sed "s/%//g"`
MONT=`df -h $HD | tail -1 | awk '{print $6}'`
if [ "$USO" -ge "$TMAX" ]; then
echo "$HD "$MONT" ESTA COM "$USO"% DE USO! VERIFICAR!!!" >> $LOG
alerta
else
rm $LOG
fi
}
#-----------------------------------------------------------------------
HD=/dev/sdb3
TMAX=95
monitor
#-----------------------------------------------------------------------
HD=/dev/sda1
TMAX=90
monitor





4. Re: Erro em script de checagem de espaço em disco

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 26/11/2018 - 14:49h

Tem que colocar o mesmo para rodar na crontab e pode colocar quantos discos precisar...

#-----------------------------------------------------------------------
HD=/dev/sda1
TMAX=95
monitor
#-----------------------------------------------------------------------
HD=/dev/sda2
TMAX=90
monitor
#-----------------------------------------------------------------------
HD=/dev/sda3
TMAX=90
monitor
#-----------------------------------------------------------------------
HD=/dev/sda4
TMAX=90
monitor
#-----------------------------------------------------------------------
HD=/dev/sda5
TMAX=90
monitor


5. Re: Erro em script de checagem de espaço em disco

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 26/11/2018 - 15:49h

BraveDOG escreveu:

Olá amigos, estou com problemas com o script abaixo:


Alert=90
Status=False
Mensagem=""

df -H | grep -vE "^Filesystem|tmpfs|cdrom" | awk '{print $5 " " $6}' | while read -r output ; do
used=$(echo "$output" | awk '{ print $1}' | cut -d'%' -f1)
partition=$(echo "$output" | awk '{ print $2 }' )
if [ "$used" -ge $Alert ]; then
Status=$(True)
Mensagem=$($Mensagem "<pre>A partição <b>$partition</b> está usando $used% at $(date). </pre>\n")
fi
echo $Status ####### Show True here
done

echo "=============="
echo "$Status" ####### Show False here
echo "=============="
exit 1


Primeiro o conteúdo da variável $Status, ao final do Do While, não muda seu valor e está dando também nas linhas 16 e 17 que corresponde a essa parte do código:
     
Status=$(True)
Mensagem=$($Mensagem "<pre>A partição <b>$partition</b> está usando $used% at $(date). </pre>\n")



./checkspace.sh: 16: ./checkspace.sh: True: not found
./checkspace.sh: 17: ./checkspace.sh: <pre>A partição <b>/snap/core/4917</b> está usando 100% at Mon Nov 26 16:18:19 UTC 2018. </pre>\n: not found


Boa tarde.
Segue sugestão:
#!/bin/bash
Alert=90

exec 3< <(df -H|sed '1d'|awk '$1 !~ /udev|tmpfs|cdrom/ {print $5,$6}')
while IFS=" " read -r used partition <&3;do
if (( "${used//%/}" >= "$Alert"));then
Status="True"
else
Status="False"
fi
echo -e "\n <pre> Status:\"${Status}\"\n A partição <b>$partition</b> está usando ${used} at $(date). \n </pre>\n"
done
exec 3<&-

Att.:
Marcelo Oliver






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts