Automatizando relatórios GLPI usando PHP e Shell Script
Qualquer administrador de GLPI já passou certa dificuldade com relação aos relatórios da ferramenta. Este artigo mostrará uma forma de gerar e enviar relatórios automaticamente para seus clientes, ou simplesmente, para agilizar sua rotina de trabalho.
[ Hits: 9.674 ]
Por: Lucas Roberto Daldegan em 23/05/2017 | Blog: http://lucasroberto.com
#!/bin/bash #Variavel que traz a data correspondente a uma semana atrás (data inicial) com formatação onewa="'"$(date --date "1 week ago" +%Y-%m-%d) #Variável que me diz qual é dia atual (data final) com formatação today="'"$(date +%Y-%m-%d) #Comando para gerar relatório mysql -u user -pPASSWD -e "USE glpi; SELECT id AS ID_do_Chamado,name AS Titulo_do_Chamado,solution AS solucao,date AS Data_de_Abertura_do_Chamado,solvedate AS Data_da_Solucao, sec_to_time(solve_delay_stat) AS tempo_de_resolucao_do_chamado FROM glpi_tickets WHERE entities_id =0 AND DATE BETWEEN $onewa 08:00:00' AND $today 18:00:00' INTO OUTFILE '/tmp/relatoriosemanal.csv';" #Comando para envio de e-mail (a mensagem foi escrita em html puro) sendemail -f noreply@empresa -u "Chamados da ultima semana" -m "Segue anexo contendo os dados dos chamados da última semana.<br />Caso necessário, entre em contato conosco atravéz do e-mail suporte@empresa.com.br ou por telefone no número 041 3333-3333 -o message-content-type=html -o message-charset="UTF-8" -a /tmp/relatoriosemanal.csv -t destinatario@dominio exit 0 #Fim do script
#!/bin/bash #Variaveis que serao enviadas ao PHP #Data inicial onewa=$(date --date "1 week ago" +%Y-%m-%d) #Data final today=$(date +%Y-%m-%d) #Variavel que define o nome final do csv que sera gerado (pelo PHP) e enviado arquivocsv=Chamados_$(date --date "1 week ago" +%d%m%y)-$(date +%d%m%y).csv #Arquivo com as variaveis em PHP echo -e "<php""\n"'$ent="0";'"\n"'$datai='"'$onewa'"''";""\n"'$dataf='"'$today'"''";""\n"'require("reports.php")'";""\n"'?>' > gr.php #Execucao do "gerador de relatorio" php gr.php > $arquivocsv #Envio do relatorio por email sendemail -f noreply@empresa -u "Chamados da ultima semana" -m "Segue anexo contendo os dados dos chamados da última semana.<br />Caso necessário, entre em contato conosco atravéz do e-mail suporte@empresa.com.br ou por telefone no número 041 3333-3333 -o message-content-type=html -o message-charset="UTF-8" -a $(find . -name "Chamdos_*.csv") -t destinatario@dominio
<?php $ent="0"; $datai='2017-04-20'; $dataf='2017-04-27'; require("reports.php"); ?>
<?php $servername = "localhost"; $username = "dbuser"; $password = "dbpassword"; try { $conn = new PDO("mysql:host=$servername;dbname=glpi", $username, $password); // set the PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "SELECT id, name, solution, date, solvedate, sec_to_time(solve_delay_stat) as sec FROM glpi_tickets WHERE entities_id =$ent AND date BETWEEN '$datai 08:00:00' AND '$dataf 18:00:00'"; $now = gmdate("D, d M Y H:i:s"); header("Expires: Tue, 03 Jul 2001 06:00:00 GMT"); header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate"); header("Last-Modified: {$now} GMT"); // force download header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); // disposition / encoding on response body header("Content-Disposition: attachment;filename=csv.csv"); header("Content-Transfer-Encoding: binary"); ob_start(); $df = fopen("php://output", 'w'); $array = $conn->query($sql); fwrite($df, 'Id_do_chamado;Titulo_do_chamado;Solucao;Data_de_abertura_do_chamado;Data_da_solucao;tempo_de_resolucao_do_chamado'); fwrite($df, "\n"); foreach ($array as $row) { fwrite($df, $row['id'].';'); fwrite($df, $row['name'].';'); $solution = html_entity_decode($row['solution']); $solution = strip_tags ( $solution ); $solution = str_replace("\r\n",' ', $solution); fwrite($df, $solution.';'); fwrite($df, $row['date'].';'); fwrite($df, $row['solvedate'].';'); fwrite($df, $row['sec']); fwrite($df, "\n"); } fclose($df); echo ob_get_clean(); } catch(PDOException $e){ echo "Connection failed: " . $e->getMessage(); } ?>
Apache - Compartilhamento de Recursos - VirtualHosts
PROXMOX Overview - Virtualização Leve e Eficiente
Octave - Programação científica no Linux (parte 2)
Como organizar biblioteca de músicas no computador
Microsiga Protheus 8 Remote no Linux
CentOS 5 - Utilizando como desktop com o Fluxbox
Sabayon Linux 5.3, versões futuras e seu potencial + remasterização
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Agora temos uma assistente virtual no fórum!!! (247)
Problemas ao instalar o PHP (9)
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (0)
Não tô conseguindo baixar nada pelo terminal (5)
Wifi parou de funcionar no Inspirion N4050 com Debian 12 (1)