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.
 
 
 
 
 
 

128 lines
3.9 KiB

#!/usr/bin/php -q
<?php
/* Data criacao: 19/03/2019
* Autor: Lucas Awade
* Equipe: Desenvolvimento
* Versão: 1.0.0
*
* Este script tem a finalidade de ser executado a para realizar atualizacoes
* das centrais quando ha pendencia de atualizacao, feita no controle.
*
* Script da meia noite;
*/
include("util/util.php");
include "util/constantes.php";
/*
* DIRETORIO DE LOG's GERADOS
*/
$patLog = "/var/log/central_atualizacao.log";
/*
* Diretorio que o Script fica/ficará (atualiza_central.php) e Logs
*/
$pathScript = "/home/simples/atualiza/";
/*
* Script que baixa os arquivos e executa a atualização
*/
$scriptAtualiza = '/home/simples/atualiza/atualizacao.sh';
/*
* Caminho do diretorio do servidor para baixar o script de atualização
*/
$patchDirScript = "http://192.168.115.12/downloads/instalador_simplesip/atualizacao_automatica/atualiza.tar.gz";
/*
* GERAR LOGS DAS OPERACOES
*/
$gravarLog = 1;
try {
$connect = ___GetConnection();
$servers = ___GetServersUpgrade();
foreach ($servers as $central) {
$connection = ssh2_connect($central['ip_central'], 2223);
if (!$connection) {
continue;
}
ssh2_auth_password($connection, 'simples', '#uwabaki@8280_$');
ssh2_exec($connection, "/bin/rm -Rf $pathScript");
$res = ___GetPermissionsSSH($connection, 'wget ' . $patchDirScript, $central['ip_central']);
if ($res == 'FAIL') {
continue;
}
___GetPermissionsSSH($connection, 'tar -xzf atualiza.tar.gz');
___GetPermissionsSSH($connection, "chmod 777 $scriptAtualiza");
___GetPermissionsSSH($connection, "$scriptAtualiza {$central['ip_central']} &");
unset($connection);
}
} catch (Exception $ex) {
$log = sprintf("%s\n[%s]\n", RemoveAcentos($ex->getMessage()), RemoveAcentos(GetLasterror()));
WriteLog($log, $patLog);
}
function ___GetServersUpgrade() {
global $connect;
$query = "SELECT id_central, nome_central, ip_central FROM central_atualizacao WHERE atualizar_central = 1 ORDER BY 1";
$result = pg_query($connect, $query);
$resp = pg_fetch_all($result);
if (pg_last_error()) {
throw new Exception('Não foi possivel conectar no servidor');
}
return $resp;
}
function ___GetConnection() {
$dbhost = IP_CENTRAL_ATUALIZACAO;
$port = '5432';
$db = 'atualizacoes';
$user = 'contacte';
$passwd = 'ctepgSQL';
$connect = pg_connect("host=$dbhost port=$port dbname=$db user=$user password=$passwd");
return $connect;
}
function ___GetPermissionsSSH($connection, $comando, $ip = '') {
global $connect;
$stdio_stream = ssh2_shell($connection);
fwrite($stdio_stream, 'su' . "\n");
sleep(1);
fwrite($stdio_stream, 'C@t@rin@3616_$3@1' . "\n");
sleep(1);
$string = stream_get_contents($stdio_stream);
GravarLog($string);
if (strpos($string, "Permission denied") !== false || strpos($string, "incorrect password") !== false) {
pg_query($connect, "UPDATE central_atualizacao SET status_central = 'ERROR[001] SENHA INCORRETA' WHERE ip_central = '$ip'");
return 'FAIL';
}
fwrite($stdio_stream, "echo '' | $comando" . "\n");
sleep(2);
$filename = stream_get_contents($stdio_stream);
GravarLog($filename);
fclose($stdio_stream);
}
function GravarLog($log, $type = 'DEBUG') {
global $gravarLog, $patLog;
if ($gravarLog) {
$log = date('d/m/Y H:i:s') . " [ $type ] " . $log . "\n";
file_put_contents($patLog, $log, FILE_APPEND);
}
}