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: Rodolfo Villanova
Subject: RES: [shell-script] Status de Utilizacao do Disco
Date: Thu, 6 Feb 2003 17:36:06 -0200

Olá camaradas,

Voltei de férias só agora, 30 dias que me afastei de minhas caixas de
e-mail! Maravilha!
Por isso só agora vou dar meu pequeno pitaco sobre esse assunto, que me
tomou um tempo significativo há quase 1 ano atrás, me forçando a estudar
ainda mais awk e shell.

No início do desafio havia buscado o mesmo caminho do nosso amigo Marco
Eloy, que era o de utilizar somente o awk e colocar os percentuais de
ocupação no próprio corpo do script, mas por sugestão do cliente estruturei
num arquivo-texto, à parte, os nomes das partições e respectivos limites,
acima dos quais o script deveria avisar por "net send" (comando nt) e por
e-mail às caixas-postais e a telefones celulares de plantão.

O script completo funciona sem modificações tanto em ambiente True64
(servidores Compaq) quanto em SunOS 5.8.

Não vou dar de bandeja todo o script aqui (até porque iria perder a graça
pra quem gosta de desafios e quer aprofundar seus conhecimento em
shell-script!), mas informo que elaborei-o de forma que facilitasse a sua
evolução/depuração passo-a-passo; durante a sua execução, o script verifica
se o filesystem superou algum dos limites pré-determinados, e somente envia
nova mensagem de aviso quando o percentual atualizado for superior ao valor
anterior (senão ele fica torrando a paciência com a mesma mensagem a cada
intervalo determinado na cron.

Por questão de elegância de programação, defini os nomes de diretórios no
início do script (por isso aparecem umas variáveis $ARQ_'s no trecho
abaixo), o que facilita uma eventual mudança de localização dos scripts ou
dos arquivos com os limites pré-estabelecidos.

8<----------------------------------------->8

...

# Monta a situacao atual do File System
df -k > $ARQ_LOG

# Formata o resultado do comando `df -k`, filtrando os campos 'Mounted on' e
'Capacity'
awk '{ print $6 ":" $5 }' $ARQ_LOG > $ARQ_DIR

# Verifica se foi ultrapassado algum limite pre-estabelecido
while read -r LIM_NOME LIM_PERC
do
        for diretorio in `cat $ARQ_DIR`
        do
                DIR_NOME=`echo $diretorio | cut -f1 -d":"`
                DIR_PERC=`echo $diretorio | cut -f2 -d":" | cut -f1 -d"%"`
                if [ "$DIR_NOME" = "$LIM_NOME" ]; then
                        if [ $DIR_PERC -gt $LIM_PERC ]; then
                                echo "*** ${DIR_NOME}\t${DIR_PERC}% ***" >> 
$ARQ_OUT
                        fi
                fi
        done
done < $ARQ_FSL

...

8<----------------------------------------->8


Espero que sirva de inspiração para novas idéias e desafios para quem está
iniciando a exercitar programação shell.


Grato,

Rodolfo Villanova
TmS do Brasil


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


Se vc fizer:

df -h | while read fs

vc terá cada linha referente a cada file system dentro de $fs para trabalhar
a vontade.

[ ]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: terça-feira, 14 de janeiro de 2003 12:25
> Para: address@hidden
> Assunto: RES: [shell-script] Status de Utilizacao do Disco
>
>
>       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


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