forked from SimplesIP/pabx-app
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
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); |
|
} |
|
|
|
|