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: 10.300 ]
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
Instalando GLPI + OCSINVENTORY no CentOS 7
manDVD - Produza DVD-vídeo rápido e fácil
DeVeDe - Produzindo discos de vídeo
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Instalação dualboot Windows 11 e Debian 13 (0)
Programa fora de escala na tela do pc (33)
Eu queria adicionar a incon do wifi e deixa transparente no fluxbox no... (0)









