você está aqui: Home  → Arquivo de Mensagens

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

 

 

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script