shell-script-pt
[Top][All Lists]
Advanced

[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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]