Foi apenas uma ideia de como fazer o flag, porém ao detalher possíveis problemas, segue alterações para tentar solucionar:
#add loop contador de particoes(inserida manualmente para exemplos);
#add FLAGS para cada particao;
##o proprio script reseta a flag no ultimo else;
#!/bin/bash
PART[0]=80
PART[1]=90
PART[2]=85
WARNING=85
FLAG[0]=/tmp/part0.log
FLAG[1]=/tmp/part1.log
FLAG[2]=/tmp/part2.log
for ((i=0;i<${#PART[@]};i++)); do
if [ ${PART[$i]} -ge $WARNING ]; then
if [ $(cat $FLAG[$i]) -eq 1 ]; then
echo "PARTICAO-$i acima ou igual de 85% - nao envia e-mail"
else
echo "PARTICAO-$i acima ou igual de 85% - envia e-mail"
echo 1 > $FLAG[$i]
fi
else
echo "PARTICAO-$i abaixo de 85%"
echo 0 > $FLAG[$i]
fi
done
Fala Tiago,
acho que a solução que vc precisa deve ser um pouco mais complexa e segura que a do Maik. Deixa te mostrar 2 coisas:
- Se vc ganhar o alarme de um file system cheio, acho que não basta vc "flegar" (UGHHH!) que já deu a msg. A sua flag deve se referir especificamente sobre qual FS foi dada a msg. Suponha que tenha enchido o FS1 e teu script deu
a msg e ligou a flag, porém antes de vc esvaziar o FS1, o teu FS2 tb lotou e vc nào terá nenhuma msg e, o que é pior, vc vai limpar o FS1, resetar a flag e não receberá a msg sobre o FS2.
- Se vc abrir espaço em um FS e esquecer de resetar a flag, vc nunca mais receberá msg nenhuma
Em virtude desses dois itens, minha proposta é:
- Que as flags recebam nomes de acordo com o FS;
- Fazer um bacalho que esvazie um FS e remova a flag a ale associada..
- Mesmo parando de mandar e-mail, proponho que vc continue mandando aviso a cada intervalo de tempo via notify-send.
Para implementar isso, vc terá de melhorar esse prg e fazer um outro para esvaziar o file system e matar o arquivo-flag.
Se vc não conhece o notify-send, copie e cole a linha abaixo:
$ notify-send -i gtk-dialog-warning "Aviso importante" "O file system FS1 vai explodir"
OBS: estou com Debian e Gnome. No Mint e no Ubuntu ambos com Gnome, isso tb funciona por padrão.
Abraços,
Julio
» Não tem tempo para fazer um curso presencial?
» Na sua cidade não tem nenhum bom curso de Linux?
» Conheça
nosso portal educacional e estude conosco:
Também damos treinamento em sua empresa
em qualquer cidade, com
certificado e nota fiscal.
Olá,
Primeiramente obrigado, é exatamente esta a ideia muito obrigado.
att,
Tiago
Bom dia!
Vê se a ideia seria essa:
#!/bin/bash
USAGE=85
FLAG=/tmp/mail.log
if [ $USAGE -ge 85 ]; then
if [ $(cat $FLAG) -eq 1 ]; then
echo "Acima ou igual 85"
echo "nao envia e-mail"
else
echo "Acima ou igual 85"
echo "envia e-mail"
echo 1 > $FLAG
fi
else
echo "Abaixo 85"
echo 0 > $FLAG
fi
Bom dia Pessoal,
Desenvolvi um script que roda no CRON a cada 10 minutos.
O script lista as partições e caso haja partições com 85% utilizadas ele envia e-mail informando.
Porém gostaria de criar uma "flag" para que quando identificado o problema não seja enviado o e-mail a cada 10 minutos.
$DF -HP | awk '{ print $5 " " $6 " " $1 }' | while read output;
do
echo $output
USAGE=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 )
PARTITION=$(echo $output | awk '{ print $2 }' )
if [ $USAGE -ge 85 ]; then
echo -e "Particao \"$PARTITION\" com uso de ($USAGE%)\" no servidor $HOSTNAME na data: $(date)\n Favor verificar
\n E-mail gerado pelo script /home/agoncti/disk_usage.....sh" | \
mail -s "[ALERTA]: Particao quase sem espaco $USAGE%" -r $SENDER $MAILBOX
fi
fi
done
Obrigado.
att,
Tiago
Agradeço a ajuda!