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: Julio Cezar Neves - DATAPREVRJ
Subject: RES: [shell-script] Status de Utilizacao do Disco
Date: Tue, 14 Jan 2003 11:16:30 -0300

Fala Eloy,
a pressa realmente é inimiga da perfeição, não reparei que vc estava usando
o awk e disse que o if estava errado, o que é mentira. Ele estaria errado
somente se vc estivesse trabalhando com Shell.

Eu sempre alerto o pessoal da lista pela mistura de awk com shell. Esta
mistura é meio complicada de administrar. O seu erro foi ter usado o $X1
(linha 35), que é uma variável do Shell, no contexto do awk. Como o awk não
consegue resolvê-la, e o que vem após o $ é um X, a interpretação que ele dá
é de $0 e a substitui pela linha completa.

Para que isso funcionasse, seria preciso chamar o awk, passando $X1 como
parâmetro. Dentro do awk, seu valor estaria preservado em ARGV[1].

Outra saída (que eu prefiro) seria tirar o awk, trabalhando com grep e cut.

Para melhorar o seu script, inclua a linha - trap "rm -f $LOG $LOG2 ; exit"
0 1 2 3 15 - após a linha 12 e exclua a 41 e 42. Tb trocaria a linha 15 por:

if [ "$1" ] ; then
   X1=$1;
else
   X1=80;
fi

[ ]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 19:30
> Para: address@hidden
> Assunto: RES: [shell-script] Status de Utilizacao do Disco
> 
> 
> 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
> 
> 
> 
> 
> 
> ---------------------------------------------------------------------
> 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]