lrobertodaldegan
(usa Debian)
Enviado em 28/04/2017 - 17:37h
manoel.junior escreveu:
Amigo, estou bem interessado no seu código, temos na empresa o GLPI também e os relatórios são gerados manualmente, como você está fazendo para gerar os relatórios via linha de comando?
Obrigado
_________________________
RHCSA - Red Hat Certified System Administrator RHEL7
Red Hat, Licença 160-128-054
Tudo bom, Manoel? Não está perfeito e ainda não terminei de adaptar, mas acho que se vc está interessado, pode te ajudar. Dê uma olhada:
Esse é o meu relatorios.sh:
#!/bin/bash
##########################################################################
#Este script foi criado para automatizar o envio de relatorios
#e necessario ter instalado no servido o pacte postfix e sendemail para o envio de emails usando os parametros deste script
#Ele executa da seguinte forma:
# chama
#contrab -----> relatorios.sh
# cria
#relatorios.sh -----> gr.php
# executa
#gr.php -----> reports.php
# cria
#reports.php -----> arquivo.csv
# envia e-mail
#relatorios.sh -----> cliente@cliente.com
###########################################################################
#variaveis que serao enviadas ao PHP
onewa=$(date --date "1 week ago" +%Y-%m-%d)
today=$(date +%Y-%m-%d)
#Variavel que define o nome final do csv que sera gerado 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="1";'"\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 "arquivo.csv") -t destinatario@dominio
Esse é o meu reports.php, que como mencionei anteriormente, um amigo de trabalho formulou e eu adaptei algumas coisas:
<?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();
}
?>
Isso tudo funcionou muito bem em um Ubuntu 12 Server (servidor antigo). Não testei em ambientes mais novos, mas acredito que funcionará ok. Espero que possa te ajudar! Por enquanto eu sigo na saga de tentar converter o meu CSV em PDF hahaha