|
|
|
|
#!/usr/bin/php -q
|
|
|
|
|
<?php
|
|
|
|
|
/*
|
|
|
|
|
* Data de cria<EFBFBD><EFBFBD>o: 19/03/2019
|
|
|
|
|
* Autor: Lucas Awade.
|
|
|
|
|
* Equipe: Desenvolvimento.
|
|
|
|
|
* Versão: 1.0.0
|
|
|
|
|
*
|
|
|
|
|
* Este script tem a finalidade de realizar as atualizac<EFBFBD>es das centrais coletando
|
|
|
|
|
* as informa<EFBFBD><EFBFBD>es da vers<EFBFBD>o sendo utilizada e o espa<EFBFBD>o em disco. Informa<EFBFBD><EFBFBD>es
|
|
|
|
|
* essas que ser<EFBFBD>o consumidas em uma futura atualiza<EFBFBD><EFBFBD>o da aplica<EFBFBD><EFBFBD>o!
|
|
|
|
|
*
|
|
|
|
|
* SCRIPT QUE FICA NO SERVIDOR 65 COLETANDO VMs
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
error_reporting(E_ERROR);
|
|
|
|
|
ini_set('display_errors', false);
|
|
|
|
|
|
|
|
|
|
include("util/util.php");
|
|
|
|
|
include "util/constantes.php";
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* DIRETORIO DE LOG's GERADOS
|
|
|
|
|
*/
|
|
|
|
|
$patLog = "/var/log/asterisk/atualizacaoCentrais.log";
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* CONEX<EFBFBD>O COM O SERVIDOR 2 PARA PEGAS OS TROCOS IAX
|
|
|
|
|
*/
|
|
|
|
|
$resp = PGConnectDB();
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* CONEX<EFBFBD>O COM O SERVIDOR 65 PARA MANTER REGISTROS
|
|
|
|
|
*/
|
|
|
|
|
$conexao = PGConnect();
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* LISTA DOS ID's PARA SEREM IGNORADOS NA LISTAGEM DOS SERVIDORES
|
|
|
|
|
*/
|
|
|
|
|
$rage = array(409, 499, 129, 267, 525, 95);
|
|
|
|
|
$x = 0;
|
|
|
|
|
$date = date('Y-m-d');
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
foreach ($resp as $ip) {
|
|
|
|
|
if (!in_array($ip['id'], $rage)) {
|
|
|
|
|
$connection = ssh2_connect($ip['host'], 2223);
|
|
|
|
|
$idCentral = GetCentral($ip['host']);
|
|
|
|
|
|
|
|
|
|
if (!$connection) {
|
|
|
|
|
GetQuery("DESATUALIZAR", $ip['nome'], null, null, null, null, null, null, $idCentral);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ssh2_auth_password($connection, 'simples', '#uwabaki@8280_$');
|
|
|
|
|
|
|
|
|
|
$version_out = ___GetSSH2($connection, 'php -r "require \'/var/www/html/aplicativo/util/funcoesApl.php\'; echo GetVersao();"');
|
|
|
|
|
|
|
|
|
|
$sistema = ___GetSSH2($connection, "cat /etc/redhat-release");
|
|
|
|
|
|
|
|
|
|
$disc_out = ___GetSSH2($connection, "df -h / | egrep '/$|/hd2$' | egrep -o '.+G|.+%|.+T|.+M' | sed -e 's/^\/dev.*sda[0-9]//g' | sed -e 's/.*root//g' | awk {'print $1,$2,$3,$4'}");
|
|
|
|
|
|
|
|
|
|
$sistema .= $sistema ? '|' . ___GetSSH2($connection, "uname -m") : '';
|
|
|
|
|
$sistema = trim($sistema);
|
|
|
|
|
|
|
|
|
|
$sizeDB = PGConnectCliente($ip['host']);
|
|
|
|
|
|
|
|
|
|
if (!$idCentral) {
|
|
|
|
|
GetQuery("CADASTRAR", $ip['nome'], $ip['host'], $disc_out, $version_out, $date, $sistema, $sizeDB);
|
|
|
|
|
} else {
|
|
|
|
|
GetQuery("ATUALIZAR", $ip['nome'], $ip['host'], $disc_out, $version_out, $date, $sistema, $sizeDB, $idCentral);
|
|
|
|
|
}
|
|
|
|
|
pg_query($conexao, $sql);
|
|
|
|
|
unset($connection);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
$log = sprintf("%s\n[%s]\n", RemoveAcentos($ex->getMessage()), RemoveAcentos(GetLasterror()));
|
|
|
|
|
WriteLog($log, $patLog);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* FUN<EFBFBD><EFBFBD>O DE CONEX<EFBFBD>O COM SSH
|
|
|
|
|
*/
|
|
|
|
|
function ___GetSSH2($connection, $command) {
|
|
|
|
|
$sistema = ssh2_exec($connection, $command);
|
|
|
|
|
stream_set_blocking($sistema, true);
|
|
|
|
|
$sistema = ssh2_fetch_stream($sistema, SSH2_STREAM_STDIO);
|
|
|
|
|
$sistema = stream_get_contents($sistema);
|
|
|
|
|
|
|
|
|
|
return $sistema;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* FUN<EFBFBD><EFBFBD>O PARA VERIFICACAO DAS CENTRAIS J<EFBFBD> CADASTRADAS
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function GetCentral($vpn) {
|
|
|
|
|
global $conexao;
|
|
|
|
|
|
|
|
|
|
$query = "SELECT id_central FROM central_atualizacao WHERE ip_central = '$vpn'";
|
|
|
|
|
$result = pg_query($conexao, $query);
|
|
|
|
|
$id = pg_fetch_assoc($result);
|
|
|
|
|
return $id['id_central'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* CONEX<EFBFBD>O COM SERVIDOR 2
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function PGConnectDB() {
|
|
|
|
|
$dbhost = '192.168.115.2';
|
|
|
|
|
$port = '5432';
|
|
|
|
|
$db = 'pbx';
|
|
|
|
|
$user = 'contacte';
|
|
|
|
|
$passwd = 'ctepgSQL';
|
|
|
|
|
|
|
|
|
|
$conn = pg_connect("host=$dbhost port=$port dbname=$db user=$user password=$passwd");
|
|
|
|
|
|
|
|
|
|
$query = "SELECT id,nome,host FROM pbx_troncos_iax ORDER BY host";
|
|
|
|
|
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
$resp = pg_fetch_all($result);
|
|
|
|
|
|
|
|
|
|
pg_close();
|
|
|
|
|
return $resp;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* CONEX<EFBFBD>O COM SERVIDOR 65
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function PGConnect() {
|
|
|
|
|
$dbhost = IP_CENTRAL_ATUALIZACAO;
|
|
|
|
|
$port = '5432';
|
|
|
|
|
$db = 'atualizacoes';
|
|
|
|
|
$user = 'contacte';
|
|
|
|
|
$passwd = 'ctepgSQL';
|
|
|
|
|
|
|
|
|
|
$conn = pg_connect("host=$dbhost port=$port dbname=$db user=$user password=$passwd");
|
|
|
|
|
|
|
|
|
|
if (pg_last_error()) {
|
|
|
|
|
throw new Exception('N<EFBFBD>o foi poss<EFBFBD>vel conectar no servidor ' . $dbhost);
|
|
|
|
|
}
|
|
|
|
|
return $conn;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* CONEX<EFBFBD>O COM CLIENTE
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function PGConnectCliente($ip) {
|
|
|
|
|
$port = '5432';
|
|
|
|
|
$db = 'pbx';
|
|
|
|
|
$user = 'contacte';
|
|
|
|
|
$passwd = 'ctepgSQL';
|
|
|
|
|
|
|
|
|
|
$conn = pg_connect("host=$ip port=$port dbname=$db user=$user password=$passwd");
|
|
|
|
|
|
|
|
|
|
$query = "SELECT pg_size_pretty(pg_database_size('pbx')) AS size";
|
|
|
|
|
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
$resp = pg_fetch_assoc($result);
|
|
|
|
|
|
|
|
|
|
pg_close();
|
|
|
|
|
return $resp['size'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* UPDATE/INSERT NO BANCO DE DADOS COM AS NOVAS INFORMA<EFBFBD><EFBFBD>ES DA CENTRAL
|
|
|
|
|
*/
|
|
|
|
|
function GetQuery($type, $nome, $host = null, $disc = null, $version = null, $date = null, $sistema = null, $sizeDB = null, $idCentral = null){
|
|
|
|
|
global $conexao;
|
|
|
|
|
|
|
|
|
|
switch($type){
|
|
|
|
|
case "CADASTRAR":
|
|
|
|
|
$sql = "INSERT INTO central_atualizacao (nome_central,ip_central,versao_central,disco_central,atualizar_central,status_central,data_reg,data_atualizacao,sistema_central,sizedb_central) VALUES ('{$nome}','{$host}','$version','$disc',0,'DESATUALIZADA','$date',null,'{$sistema}','$sizeDB')";
|
|
|
|
|
break;
|
|
|
|
|
case "ATUALIZAR":
|
|
|
|
|
$sql = "UPDATE central_atualizacao SET nome_central = '{$nome}', versao_central = '$version', disco_central = '$disc', data_reg = '$date', sistema_central = '$sistema', sizedb_central = '$sizeDB' WHERE id_central = $idCentral";
|
|
|
|
|
break;
|
|
|
|
|
case "DESATUALIZAR":
|
|
|
|
|
$sql = "UPDATE central_atualizacao SET nome_central = '{$nome}', versao_central = '', disco_central = '', sistema_central = '', sizedb_central = '' WHERE id_central = $idCentral";
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pg_query($conexao, $sql);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|