Ajuda Script

1. Ajuda Script

Rishi
rishi

(usa Ubuntu)

Enviado em 23/10/2009 - 11:10h

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

-------------------------------------------------------------------------

Se puder me ajudar agradeço muito.

Abraço!


  


2. Re: Ajuda Script

Rodrigo Mendes Pasini
rodrigo8819

(usa Ubuntu)

Enviado em 23/10/2009 - 12:58h

invés de usar o if tente usar o case, é melhor nesse caso.


3. Re: Ajuda Script

nelio
neliobjr

(usa Red Hat)

Enviado em 23/10/2009 - 14:35h

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.



4. Re: Ajuda Script

nelio
neliobjr

(usa Red Hat)

Enviado em 23/10/2009 - 15:02h

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.


5. Re: Ajuda Script

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 23/10/2009 - 15:12h

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







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts