Você está na página 1de 2

Ajuda Script

Venho pedir mais uma vez uma ajuda de todos, mas claro, se não for te atrapalhar em algo.

Mas é o seguinte:

Não estou conseguindo pegar a informação de uso em porcentagem do HD e jogar num arquivo texto caso ele esteja
acima do nivel de criticidade abaixo

a criticidade é:

- de 70 a 80 = criticidade 3
- de 80 a 90 = criticidade 2
- de 90 a 100 = criticidade 1

Como estou fazendo um programa como se fosse o Nagios, o script gravara as informações do disco e quando estiver
num certo nivel sera gravado a informação em um banco de dados (já criado) de acordo com o nivel

Abaixo esta só um teste que fiz, mas não esta dando certo

#!/bin/bash

df -h | grep -v Sist.Arq. | grep -v Tam | grep -v tmpf | grep -v varrun | grep -v varlock | grep -v udev | grep -v tmpfs |
grep -v lrm | awk {'print $5'}

if [ "$?" -gt "70" ]; then


echo "criticidade 3" >> los.txt
else
echo " disco ok " >> log.txt

fi

Indiferente de vc usar case, if, etc, sua sintaxe esta errada e por isso não funciona.!!!

Seguinte, o comando $? retorna qual a saida do comando acima, explico melhor, se o comando foi realizado
com sucesso, erro ou algum outro codigo, por exemplo 0 para verdadeiro, 1 para erro e existem mais alguns
que não lembro e tb não vem ao caso.

Outra coisa vc concatenou muitos comandos, não há esta necessidade com o comando abaixo vc pegará o
que importa, com base no seu comando.

df -h | awk '$1 == "/dev/hda1" {print $5}'

e para vc fazer funcionar o script jogue o resultado deste comando para uma variavel:

var=`df -h | awk '$1 == "/dev/hda1" {print $5}'`

#caso queira ver echo $var, o nome da variavel pode ser qualquer um.

e faça a troca com o seu script pela $var.

Bom, é isso, qualquer coisa posta ai, se precisar de mais ajuda para acabar este script.

Quanto respondi estava longe de um linux e não me atendei a um detalhe, esta resposta virá com o sinal de %, que vc
deve retira-lo para conseguir compara-lo como número, com o comando cut:

| cut -d'%' -f1

E fiz o script ficando conforme abaixo, só alterei os valores para pegar meu hd de 26%

#!/bin/sh

var=`df -h | awk '$1 == "/dev/hda1" {print $5}' | cut -d'%' -f1`


if [ $var -gt 20 ] && [ $var -le 30 ]; then
#caso seja maior e menor igual a 30
echo "criticidade 3"

if [ $var -gt 31 ] && [ $var -le 40 ]; then


#caso seja maior que 31 e menor igual a 40
echo " criticidade 2"
fi
else
# e este else pega as outras faixas.
echo ok
fi

#FIM

é isso ai, existem varias formas de fazer este script esta é somente uma delas, poderia ser com o case como o colega
disse acima, com elif, etc, etc.

espero ter ajudado.


até mais.

if [ "$var" -ge "90" ]; then


echo "criticidade 1"
elif [ "$var" -ge "80" ]; then
echo "criticidade 2"
elif [ "$var" -ge "70" ]; then
echo "criticidade 3"
else
echo OK
fi

Você também pode gostar