|
|
|
|
#!/usr/bin/php -q
|
|
|
|
|
<?php
|
|
|
|
|
/* Data criacao: 19/03/2019
|
|
|
|
|
* Autor: Lucas Awade
|
|
|
|
|
* Equipe: Desenvolvimento
|
|
|
|
|
* Vers<EFBFBD>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<EFBFBD> (atualiza_central.php) e Logs
|
|
|
|
|
*/
|
|
|
|
|
$pathScript = "/home/simples/atualiza/";
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Script que baixa os arquivos e executa a atualiza<EFBFBD><EFBFBD>o
|
|
|
|
|
*/
|
|
|
|
|
$scriptAtualiza = '/home/simples/atualiza/atualizacao.sh';
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Caminho do diretorio do servidor para baixar o script de atualiza<EFBFBD><EFBFBD>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<EFBFBD>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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|