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.
128 lines
3.9 KiB
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); |
|
} |
|
} |
|
|