De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Guilherme Fausto
Data de Publicação: 14 de março de 2013
Bom dia,
Vi a dica de visualização dos backups do bacula do dia 12/02/2013. Achei muito interessante e gostei muito, porém no meu servidor bacula trabalho com o banco de dados Postgres, com isso adaptei os scripts da dica do Anderson Angelote e resolvi enviar a vocês essas modificações.
Além da adaptação para o Postgre adicionei uma cor diferente para a visualização de Backups de level "Differential".
<?php class Connecta { private $host = "localhost"; private $usuario = 'bacula'; private $senha = ''; private $banco = 'bacula'; private $porta = '5432'; function Conecta() { $stringConn = "host=$this->host " ."port=$this->porta " ."dbname=$this->banco " ."user=$this->usuario " ."password=$this->senha "; $conn = pg_connect($stringConn); if(!$conn) { die('Não foi possível se conectar ao Banco de Dados.'); } else { return $conn; } } }
<?php require_once('Conecta.class.php'); class jobsDAO extends Connecta { private $nome; private $data; private $id; private $jobStatus; function ListaClientes($val) { if($val == true) { //Instanciando uma conexão com o banco de dados $con = parent::Conecta(); //Monta a query $query = "SELECT * FROM client ORDER BY name "; //Envia a query para o banco $result = pg_query($con,$query); //Retorna o resultado return $result; } else return false; } function ListaJobs($val,$id, $dia) { if($val == true) { //Instanciando uma conexão com o banco de dados $con = parent::Conecta(); //Monsta a query $query = "SELECT * FROM vw_Jobs WHERE ID = $id AND EndTime = '$dia' AND EndTime <> '0000-00-00' ORDER BY JobId DESC LIMIT 1;" ; //Envia a query para o banco $result = pg_query($con,$query); //Retorna o resultado return $result; } else return false; } }
<!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <title>Bacula - Controle ScITech</title> <meta name="description" content="Template HTML5"> <meta name="keywords" content="lista de palavras chaves"> <meta name="author" content="Anderson Angelote"> <meta name="generator" content="HTML-Kit 292"> </head> <?php require_once ('jobsDAO.class.php'); require_once ('Conecta.class.php'); ?> <p> < h2 align=center>Backups executados no Bacula </h2> </p> <?php $hoje=date("d/m/Y"); $conta = 0; $html = "<table border=0 cellpadding= cellspacing=0>"; $html .= "<thead>"; $html .= "<tr bgcolor=#bebebe font size=1>"; $html .= "<td align=center scope=\"col\">Id</td>"; $html .= "<td scope=\"col\">Nome</td>"; $limite = 31; $data=date("d/m"); $arr = explode("/", $data); $dia = $arr[0]; $mes = $arr[1]; for ($n = 0; $n <= $limite; $n++) { $data_dec = date('d/m', mktime(0, 0, 0, $mes, $dia - $n)); $html .= "<td align=\"center\" width=\"35\" scope=\"col\">$data_dec</td>"; } $html .= "</tr>"; $html .= "</thead>"; $consulta = new jobsDAO(); $result = $consulta->ListaClientes(true); if($result) { while($serv = pg_fetch_object($result)) { if ($conta == 0) { $cor = "#dadada"; $conta = 1; } else { $cor = "#bebebe"; $conta = 0; } $html .= "<tbody>"; $html .= "<tr bgcolor=$cor >"; $servidor = $serv->clientid ; $html .= "<td>" . $serv->clientid . "</td>"; $html .= "<td>" . $serv->name . "</td>"; $data=date("d/m/Y"); $arr = explode("/", $data); $dia = $arr[0]; $mes = $arr[1]; $ano = $arr[2]; for ($n = 0; $n <= $limite; $n++) { $data_dec = date('Y-m-d', mktime(0, 0, 0, $mes, $dia - $n, $ano)); $cor1 = "#FF0b00"; $html .= "<td "; $consulta1 = new jobsDAO(); $result1 = $consulta1->ListaJobs(true,$servidor,$data_dec); if($result1) { while($serv1 = pg_fetch_object($result1)) { switch($serv1->jobstatus) { case "f": $Status = 'Fatal'; $cor1 = "#FF0b00"; break; case "T": switch ($serv1->level) { case "F": $Status = "FULL"; $cor1 = "#00bBff"; break; case "I": $Status = "INCR"; $cor1 = "#00FF00"; break; case "D": $Status = "DIFF"; $cor1 = "#FFD700"; default: $Status = $serv1->Level; $cor1 = "#00bBff"; break; } break; case "E": $Status = 'ERROR'; $cor1 = "#FF0b00"; break; case "A": $Status = 'Cancel'; $cor1 = "#FFFF00"; break; default: $Status = $serv1->jobstatus; $cor1 = $cor; break; } $html .= "bgcolor=$cor1>$Status"; } } $html .= "</td>"; } $html .= "</tbody>"; $html .= "</tr>"; } } echo $html;
O arquivo index.php foi mantido da mesma forma:
<html> <?php ini_set('display_errors',1); include("corpo.php"); ?> </html> <meta HTTP-EQUIV="refresh" CONTENT="35">
O script para criação da View no banco de dados teve uma modificação, foi substituído o DATE_FORMAT, usado no mysql pelo TO_CHAR:
create view vw_Jobs AS SELECT job.clientid AS id, to_char(job.endtime, 'YYYY-MM-DD'::text) AS endtime, job.jobstatus, client.name AS nome, job.level, job.jobid FROM job JOIN client ON job.clientid = client.clientid;
É isso aí, espero que essa dica possa ser útil para diversas pessoas, assim como para mim.
Error: No site found with the domain 's2.dicas-l.com.br' (Learn more)