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: Anderson Angelote
Data de Publicação: 12 de fevereiro de 2013
Neste post, irei colocar os arquivos de uma página PHP que ira gerar um relatório que facilita o acompanhamento dos backups fetos pelo sistema Bacula.
O primeiro passo é instalar o apache e o módulo do php:
aptitude install -y apache2 libapache2-mod-php5
Iremos criar primeiramente o programa que irá conectar o banco:
vim /var/www/Conecta.class.php
<?php class Connecta { private $Host = "localhost"; private $Usuario = "root"; private $Senha = "senhabaculamysql"; private $Banco = "bacula"; function Conecta() { $conn = mysql_connect($this->Host, $this->Usuario,$this->Senha) or die(mysql_error()); $db = mysql_select_db($this->Banco, $conn) or die(mysql_error()); $charset = mysql_set_charset('utf8'); return $conn; } } ?>
Agora iremos criar o arquivo com as rotinas de busca no banco:
vim /var/www/jobsDAO.class.php
<?php require_once('Connecta.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(); //Monsta a query $query = "SELECT * FROM Client ORDER BY Name "; //Envia a query para o banco $result = mysql_query($query,$con); //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 = mysql_query($query,$con); //Retorna o resultado return $result; } else return false; } }
O próximo passo é criar o arquivo que vai mostrar o resultado dos backups executados:
vim /var/www/corpo.php
<!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 ('jobs.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 = mysql_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 = mysql_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; 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; ?>
Agora vamos criar a página que vai atualizar a tela a cada 35 segundos:
vim /var/www/index.php
< html> <? include("corpo.php"); ?> </html> < meta HTTP-EQUIV="refresh" CONTENT="35">
E para finalizar, iremos criar a nossa view no banco MySQL:
mysql -u root -p
create view vw_Jobs AS select Job.ClientId AS ID, DATE_FORMAT(Job.EndTime,'%Y-%m-%d') AS EndTime, Job.JobStatus AS JobStatus, Client.Name AS Nome, Job.Level AS Level, Job.JobId AS JobId FROM Job Join Client ON Job.ClientId = Client.ClientId
Espero ter ajudado!
Blog do autor
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