PABX da Simples IP
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

191 lines
6.1 KiB

#!/usr/bin/php -q
<?php
/*
* Data de criação: 19/03/2019
* Autor: Lucas Awade.
* Equipe: Desenvolvimento.
* Versão: 1.0.0
*
* Este script tem a finalidade de realizar as atualizacões das centrais coletando
* as informações da versão sendo utilizada e o espaço em disco. Informações
* essas que serão consumidas em uma futura atualização da aplicaçã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ÃO COM O SERVIDOR 2 PARA PEGAS OS TROCOS IAX
*/
$resp = PGConnectDB();
/*
* CONEXÃ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ÇÃO DE CONEXÃ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ÇÃO PARA VERIFICACAO DAS CENTRAIS JÁ 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Ã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Ã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ão foi possível conectar no servidor ' . $dbhost);
}
return $conn;
}
/*
* CONEXÃ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ÇÕ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);
}