você está aqui: Home  → Arquivo de Mensagens Programação Shell Linux: Inscrições Abertas

Shell Script - Notificações de tickets vencidos - Plugin Datefield - Trac

Colaboração: Noilson Caio Teixeira de Araújo

Data de Publicação: 30 de maio de 2011

Para suprir a falta de notificação de ticket que se vence no dia corrente, desenvolvi um simples programa em shell script para isso.

Fonte: https://mycodestock.com/code/899/

#!/bin/bash
# Noilson Caio
# 22 / abril / 2010
#
# Notifica tickets vencidos do datefiel, plugin do TRAC.
# Busca Tickets que se vencem na data atual de execucao do script
#
# data - equivale ao formato utilizado no trac.ini, vaiavel due_date.value em [ticket-custom]
# url - url do TRAC
# 
#
#
data="$(date +%d-%m-%Y)"
url="trac.dominio.com"
#
# chaveaut - qualquer numero diferente de zero habilita a autenticacao
# Se chaveaut = 1 
# usuario - usuario com permissoes de realizarconsultas no TRAC
# senha - senha do usuario
# 
chaveaut="1"
usuario="usuario"
senha="senha"
#
# saida - arquivo de retorno da consuta
#
saida="$(mktemp)"
#
# mail - endereco de email onde sera enviado o aviso
#
mail="redes@dominio.com.br"
#
# Localiza e testa os principais programas envolvidos no processo
#
sedbin="$(which sed)"
mailbin="$(which mail)"
wgetbin="$(which wget)"
#
# Testa binarios
#
for i in "$sedbin" "$mailbin" "$wgetbin"
do
	if [ ! -e "$i" ]
	then
		echo "binario nao encontrado"
		exit 127
	fi
done
#
#
# Consulta autenticada
#
consultaaut()
{
wget -q "http://"$url"/query?status=accepted&status=assigned&status=new&status=reopened&due_date=%7E"$data"&format=csv&order=priority&col=id&col=summary&col=due_date&col=status&col=owner&col=milestone&col=component" --user="$usuario" --password="$senha" -O "$saida"
}
#
# Consulta sem autenticacao
#
consulta()
{
wget -q "http://"$url"/query?status=accepted&status=assigned&status=new&status=reopened&due_date=%7E"$data"&format=csv&order=priority&col=id&col=summary&col=due_date&col=status&col=owner&col=milestone&col=component" -O "$saida"
}
#
# Testa chave de autenticacao
#
if [ "$chave" != "0" ]
then
	consultaaut
else
	consulta
fi
#
# Testa resultado da consulta
#
conteudo=$(cat $saida | sed -e 1d)
if [ -z "$conteudo" ];
then
	exit
else
	sed -i 1d "$saida"
	while read ticket
	do
		id=$(echo $ticket | cut -d',' -f 1)
		sumario=$(echo $ticket | cut -d',' -f 2)
		dono=$(echo $ticket | cut -d',' -f 5)
#
# MSG
#
msg()
{
echo "
ticket de id: $id - http://"$url"/ticket/"$id" [ $sumario ] responsavel : $dono. Vence hoje, "$data"
"
}
#
# Notifica por email
#
		msg | mail -s "ticket de id: [ $id ] - Data limite" "$mail"
#
# Limpa fila
#
		sed -i 1d "$saida"
	done < "$saida"
#
# Limpa tempfile
#
	rm -rf "$saida"
#
fi
exit 0

Agendamento (cron)

Adicionar o seguinte script em /etc/cron.daily/ e chmod +x /etc/cron.daily/Wdatefield.sh

#!/bin/bash
/usr/caminho/do/script/Wdatefield.sh

Tem um vídeo com o funcionamento do script em: http://ncaio.ithub.com.br/2011/05/05/shell-script-notificacoes-de-tickets-vencidos-plugin-datefield-trac/

Blog do autor: http://ncaio.ithub.com.br


Veja a relação completa dos artigos de Noilson Caio Teixeira de Araújo