[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Script de iniciante
From: |
Klaus Engelmann |
Subject: |
Script de iniciante |
Date: |
Tue, 11 Jul 2006 14:15:26 -0300 |
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='address@hidden'
Admin02='address@hidden'
#
# 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
[As partes desta mensagem que não continham texto foram removidas]
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Script de iniciante,
Klaus Engelmann <=