Prezados Colegas:

Por um tempo estou acompanhando a lista. Agradeço as excelentes
participações de grandes colegas. Como sou um iniciante em Shell,
resolvi escrever meu primeiro "script mais sério" e o coloco para que
todos postem suas sugestões e críticas.

O script foi criado para rodar em cada máquina. Minha intenção é que
faça o seguinte:

---> verifica o estado do filesystem e manda um mail com o conteúdo do
comando "df"

---> se, por exemplo, o /var passa de um limite estabelecido, elimina
todos os logs "extras" que existem.

Com certeza, existem até rotinas que podem fazer tudo isto, mas para
ser um exemplo funcional, acho que valeu a iniciativa. No script,
alterei o diretório /var pelo meu /home, pois testei o funcionamento
do script em meu server. Coloquei nos comentários o que acho que devo
aprender para melhorar.

Agradecido pela ajuda,

-- 
Klaus Engelmann
CCNA - CSCO10971632

#!/bin/bash

# Criando arquivos temporários no meu home que serão utilizados no teste
# do Script


for i in 1 2 3 4
do
    {
        touch /home/klaus/scripts_manutencao/kmaillog.$i
        echo -e "Criando kmaillog.$i\n" >> /tmp/resultado_script.$$
    }
done

#
# Definicao de Variaveis
#

file='/var'
limite='60'

Assunto01='FileSystem server.rs.br'
Assunto02='Capacidade Limite do /home/klaus/scripts_manutencao'
Admin01=' [EMAIL PROTECTED]'
Admin02='[EMAIL PROTECTED]'

#
# Definicao de Primeira Mensagem - Estado Geral do Filesystem
#

df -k  > /tmp/resultado_df.$$
echo -e '\n###################################################\n' >>
/tmp/resultado_df.$$
ls -lah /var/log >> /tmp/resultado_df.$$

#
# Primeira Acao: envia um mail contendo o estado do filesystem inteiro
#

mail -c "$Admin02" -s "$Assunto01" $Admin01 < /tmp/resultado_df.$$

#
# Segunda Acao: Se o /var/ estiver estourando, limpar o excesso de logs
#


#
# Verifica se o /var esta estourado
#


# Estou em dúvida se é possível fazer mudanças nesta parte do Script
# Achei muito "forçado" utilizar todos esses "cut" para obter as
# informações que quero do df


while read linha
do
    {
        particao=$(echo "$linha" | cut -d" " -f15)
        uso=$(echo "$linha" | cut -d" " -f11)
        if [ "$particao" == "$file" ]
        then
            {
                break
            }
        fi
    }
done < /tmp/resultado_df.$$
rm /tmp/resultado_df.$$


#
# Acoes caso o /var na maquina esteja estourado
#

# Novamente dentro desta rotina utilizo um "cut" para capturar apenas
uma parte da
# linha do comando "df" que corresponte ao /var (será a melhor forma ???)


if [ "${uso%\%}" -gt "$limite" ]
then
    {
        ls -lah /home/klaus/scripts_manutencao | grep 'kmaillog.[0-9]'
> /tmp/maillogs_demais.$$
        echo -e "\nSituacao Critica!! O ${particao} esta com ${uso}
ocupado\n" >> /tmp/resultado_script.$$
        while read linha2
        do
            {
                logDemais=$(echo "$linha2" | cut -d" " -f15)
                echo -e "Vou excluir o log ${logDemais}\n" >>
/tmp/resultado_script.$$
                rm /home/klaus/scripts_manutencao/${logDemais}
            }
        done < /tmp/maillogs_demais.$$
        rm /tmp/maillogs_demais.$$
        mail -c "$Admin02" -s "$Assunto02" $Admin01 < /tmp/resultado_script.$$
        rm /tmp/resultado_script.$$
    }
fi

exit 0


---------------------------------------------------------------------
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: [EMAIL PROTECTED]
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil

 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/shell-script/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a