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: Tue, 14 Jan 2003 12:25:25 -0200

        K´ra Nao entendi muito bem o que vc quiz dizer. Na verdade primeiro eu
utilizei o "grep+cut" mas sempre tinha que repetir o comando para poder
exibir a linha inteira, tipo:
/dev/st2                973M    486M    487M    49%     /
/dev/st3                9.0G    3.0G    6.0G    33%     /base
        pois o cut pega uma unica lista de valores por vez e poe num vetor, o 
que
me impossibilita de pegar duas listas numa unica linha de comando. Assim
tenho que executa-lo duas vezes, uma para pegar o % de uso e outra para
pegar o nome na particao o que na minha opiniao é retrabalho, por isso optei
pelo awk. Entretanto vc me passou duas informacoes que eu desconhecia:1ª awk
nao aceita variaveis shell e 2ª que ele aceita se a variavel for passada
como parametro. Tentei passar a variavel como parametro sem sucesso. Como eu
posso passar a variavel como parametro?
        Em novas tentativas com a dupla grep/cut parei no mesmo ponto; execucao
dupla do mesmo comando. Vc tb acha que soh da pra fazer usando grep/cut 2
vezes? como ficaria na usa opiniao?

Sds
Marco Eloy
P.S. Recibi a resposta da brasport... Grato

-----Mensagem original-----
De: Julio Cezar Neves - DATAPREVRJ
[mailto:address@hidden]
Enviada em: terça-feira, 14 de janeiro de 2003 12:17
Para: address@hidden
Assunto: RES: [shell-script] Status de Utilizacao do Disco


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



---------------------------------------------------------------------
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]