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.634 ]
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
ERPs Open Source (parte 1) - Principais soluções
Planejando a migração de aplicações comerciais para o Linux/GNU
NGINX Open Source com Balanceamento de Carga e Persistência de Sessão
Asterisk Central IPBX - Debian
Nenhum comentário foi encontrado.
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
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
É cada coisa que me aparece! - não é só 3% (1)
Alguma pessoa pode me ajudar com drriver Core i3 7020u (Debian 12)? (2)
Mikrotik não mostra bytes nem packtes (1)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código [RESOLVID... (4)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta