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.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários