[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RES: [shell-script] Status de Utilizacao do Disco
From: |
Marco Eloy |
Subject: |
RES: [shell-script] Status de Utilizacao do Disco |
Date: |
Mon, 13 Jan 2003 19:30:22 -0200 |
Caro Julio como Vai?!?!?
usei operador >(para valores numericos, correto?) pq df -h sempre passa como
$5 um inteiro. Quando tento fazer comparocoes entre strings(df -h | tr -d %
| awk '/\/dev/ { if( $5 -ge $X1) print "OVERLOAD: " $0 }' >> $LOG2) ele me
retorna todas as linhas do comando. Sera que vc poderia dar uma olhada no
script???
Grato
Marco Eloy
-----Mensagem original-----
De: Julio Cezar Neves - DATAPREVRJ
[mailto:address@hidden]
Enviada em: segunda-feira, 13 de janeiro de 2003 20:03
Para: address@hidden
Assunto: RES: [shell-script] Status de Utilizacao do Disco
Caro Marco,
a sua descrição foi tão precisa que nem precisei entender a lógica do
script. O problema provavelmente deve-se ao fato de vc ter usado um
comparador de strings (>). Para comparar numericamente, usa-se:
-eq = igual (equal)
-ne = diferente (not equal)
-lt = menor (less than)
-le = menor ou igual (less or equal)
-gt = maior (greater than)
-ge = maior ou igual (greater or equal)
Para testar faça:
a=1
[ $a = 01 ] && echo verdadeiro 1
[ $a = 1 ] && echo verdadeiro 2
[ $a -eq 01 ] && echo verdadeiro 3
[ $a -eq 1 ] && echo verdadeiro 4
Neste teste, vc não deverá obter o verdadeiro 1 pq comparados como string,
os 2 são diferentes.
[ ]s,
Julio Cezar Neves
-Eu Apoio o Software Livre-
-I Support Free Software-
* +55 21 2528-7070 / 9853-4044
*address@hidden
> -----Mensagem original-----
> De: Marco Eloy [mailto:address@hidden]
> Enviada em: segunda-feira, 13 de janeiro de 2003 18:23
> Para: Shell Script
> Assunto: [shell-script] Status de Utilizacao do Disco
>
>
> Hello, Pessoal, como vao?
> Criei um script que checa quais os sistemas de arquivos
> ultrapassaram uma
> determinada cota de utilizacao estipulada a principio em 80%
> e me avisa por
> e-mail se isto ocorreu(como pode ser visto na linha 35). Ha
> alguns dias
> surgiu a necessidade dessa cota ser informada via parametro.
> Alterei entao a
> linha 35 para a 36. Entretanto o comando sempre lista todos
> os sistemas de
> arquivos e nao os que ultrapassaram a cota $1. Isto ocorre
> porque dentro da
> comparacao (if $5 > $X1) ele compara o percentual de
> utilizacao($5) com a
> string $X1 e nao com o VALOR da string $X1 que seria $1.
> Alguem ja teve algum problema parecido? Serah que o if nao
> pode ser usado
> com variaveis, e sim soh com valores numericos?
> O Script Segue logo abaixo.
>
> Desde jah agradeco qualquer ajuda
>
> Sds
> Marco Antonio Eloy
> Analista de Suporte/Adm. de TI
> Brespel - Cia. Indal Brasil Espanha
> 55 75 422-2014/422-2712
>
>
> --------------------------------------------------------------
> ------------
> 1 #!/bin/bash
> 2 # Script de Status dos Sistemas de Arquivos
> 3 # Executando de hora em hora
> 4 # Criado dia 09-Jan-2003
> 5 # Design by Eloy
> 6 #
> 7 PATH=/sbin:/usr/sbin:/bin:/usr/bin:usr/local/bin
> 8 export PATH
> 9 prog=`basename $0`
> 10 maquina=`hostname`
> 11 LOG=/var/log/$prog-$$.log
> 12 LOG2=/var/log/$prog-$$.log2
> 13 DATA=`date +%A,%d-%b-%Y`
> 14 HORA=`date +%H:%M:%S`
> 15 if [ "$1" = "" ] ; then
> 16 X1=80;
> 17 else
> 18 X1=$1;
> 19 fi
> 20 cat <<EOF > $LOG
> 21 A L E R T A D E O V E R L O A D
> 22
> 23
> 24 Alguns Dispositivos Excederam a
> Cota de $X1%
> 25
> 26 Isto Pode Ser Causado por VIRUS, Inprudencia
> de Alguns Usuarios ou
> Problemas
> 27
> 28 Pertinentes ao SO. Check o Log Abaixo
> Para Obter Mais
> Detalhes.
> 29
> 30 Maquina: $maquina
> 31 FsCheck Executando em $DATA às $HORA
> 32 ---------------------------
> 33 EOF
> 34
> 35 #df -h | tr -d % | awk '/\/dev/ { if($5 > 80)
> print "OVERLOAD: "
> $0 }' >> $LOG2
> 36 df -h | tr -d % | awk '/\/dev/ { if($5 > $X1)
> print "OVERLOAD: "
> $0 }' >> $LOG2
> 37 if [ -s $LOG2 ]; then
> 38 cat $LOG2 >> $LOG
> 39 mail -s "AVISO: OVERLOAD EM $maquina" adm-cpd < $LOG
> 40 fi
> 41 rm -f $LOG
> 42 rm -f $LOG2
>
>
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de
> programação, como perl, C etc. Quem insistir em não seguir
> esta regra será moderado sem prévio aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em
http://www.listasdiscussao.cjb.net
---------------------------------------------------------------------
Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
http://br.yahoo.com/info/utos.html
---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em
http://www.listasdiscussao.cjb.net
---------------------------------------------------------------------
Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
http://br.yahoo.com/info/utos.html