Push inicial con estructura de archivos desde servidor CV

This commit is contained in:
Luis Machuca 2021-05-05 11:02:13 -04:00
parent 4fa062a28b
commit 1d703c0cca
14 changed files with 386 additions and 0 deletions

6
actualizar_gestor.sh Executable file
View file

@ -0,0 +1,6 @@
#!/bin/bash
# Ejecuta la actualizacion del gestor corporativo
source ./configuracion.conf
mysql -u ${USER} -p${PASS} ${DB} < consultas_gestor.sql > estado_gestor.log 2>&1
date '+%Y%m%d %H:%M' >> fechas_gestor.txt

84
api-cli.php Executable file
View file

@ -0,0 +1,84 @@
<?php
#php api-cli.php OP "$DB" "S{HOY}:${SUB_TAMANYO}:${RESULT}"
if ($argc < 3) {
die ("Faltan argumentos \napi.cli.php [INI|FIN] database tupla_status\n");
}
$OP = $argv[1];
$DB = $argv[2];
$HOY= 0;
$TAM= 0;
echo $argv[3]. "\n";
list($HOY, $TAM, $RES) = explode(':' , $argv[3]);
if (!isset($HOY) or !isset($TAM) or !isset($RES)) {
die ("Argumentos incorrectos\n");
}
$TAM=intval($TAM);
require_once ('./detail/Maestros.php');
$enlaceMaestro = ConectarMaestro();
if (!$enlaceMaestro) {
die ("Error conexion servidor Maestros\n");
}
mysql_select_db('db_trebol_centralizado',$enlaceMaestro);
require_once ('./detail/Conn.Respaldos.php');
$enlaceRespaldos = ConectarRespaldos();
mysql_select_db('sb_trebol_respaldos', $enlaceRespaldos);
/*
* Obtener nuestra identificacion de sucursal
*/
$sucursal['query']= <<<EOF
SELECT suc_id, suc_nombre, suc_nombre_bd, suc_conectado, suc_ip, suc_puerto FROM mae_sucursales WHERE suc_nombre_bd = "${DB}" and suc_id < 90
EOF;
$sucursal['res']= mysql_query($sucursal['query'], $enlaceMaestro);
if (mysql_num_rows($sucursal['res']) !== 1) {
die ('No se encuentra la sucursal correcta para '. $DB. ' .');
}
$suc_row = mysql_fetch_assoc($sucursal['res']);
mysql_close($enlaceMaestro);
$HORA=strftime('%H:%M:%S');
echo "${HORA} ";
switch ($OP) {
case 'INI': // INSERT
$Q = <<<EOF
INSERT INTO respaldos VALUES ( '${suc_row["suc_nombre_bd"]}', '$HOY', '$HORA', $TAM, $RES, 'SUB');
EOF;
echo $Q."\n";
$ins= mysql_query($Q, $enlaceRespaldos);
echo ' * '. mysql_error($enlaceRespaldos). "\n";
break;
case 'FIN': // UPDATE
$put_log='';
if (intval($RES) > 0) {
$put_log= @file_get_contents('_put.log');
$put_log= substr($put_log, -28);
$RES= -intval($RES);
} else {
$put_log= 'OK';
$RES= 1;
}
$msg= mysql_real_escape_string($put_log);
$Q = <<<EOF
UPDATE respaldos
SET resp_estado=${RES}, resp_hora='$HORA', resp_mensaje='$msg'
WHERE resp_suc_db= '${suc_row['suc_nombre_bd']}' AND resp_fecha='${HOY}';
EOF;
echo $Q."\n";
$upd= mysql_query($Q, $enlaceRespaldos);
break;
default:
die ("Operacion incorrecta\n");
break;
}
?>

18
configuracion.conf_ Normal file
View file

@ -0,0 +1,18 @@
#Antes de distribuir confirmar que este directorio
# no contenga la clave *privada*.
V=3
DB=db_trebol_sucursal
USER=helpcom_back_up
PASS=resp2014aldo
BUCKET=trebol-sucursal
APIKEY_L1=0
# Edad de respaldos locales
EDADL="30 days"
# Edad de respaldos remotos
EDADR="14 days"
# public keyid (subclave) desde gpg --list-keys
KEYID=4F7097DB
# ruta de los respaldos
RUTA=/usr/local/respaldos
RUTATXT=/usr/local/respaldos

27
consultas_gestor.sql Normal file
View file

@ -0,0 +1,27 @@
--
-- ESTA CONSULTA INSERTA RESUMEN MENSUAL POR CADA EMPRESA AGRUPADA POR SUCURSAL
--
INSERT INTO gco_empresas_detalle (emp_id,emd_ano,emd_mes,suc_id,emd_total)
(SELECT a.emp_id,YEAR(current_date()),MONTH(current_date()),suc_id,sum(bed_usado)
FROM gco_beneficiarios_detalle a INNER JOIN gco_empresas b USING (emp_id)
WHERE bed_centralizado ='NO' and emp_dia_corte=DAY(current_date())
GROUP BY a.emp_id, suc_id);
--
-- ESTA CONSULTA ACTUALIZA DETALLE, CAMBIA ESTADO DE CENTRALIZACIÓN DE NO A SI PARA NO VOLVER A CENTRALIZAR
--
UPDATE gco_beneficiarios_detalle a INNER JOIN gco_empresas b USING (emp_id)
SET bed_centralizado='SI'
WHERE bed_centralizado='NO' and emp_dia_corte=DAY(current_date());
--
-- ESTA CONSULTA ACTUALIZA DATOS DEL BENEFICIARIO, REINICIA SUS SALDOS A CERO AL CERRAR EL MES
--
UPDATE gco_beneficiarios a INNER JOIN gco_empresas b USING (emp_id)
SET ben_aprobado=0, ben_usado=0, ben_saldo=0
WHERE emp_dia_corte=DAY(current_date());

2
crontab.txt Normal file
View file

@ -0,0 +1,2 @@
5 0 * * * cd /usr/local/respaldos/db && ../respaldar.sh ../configuracion.conf && ../subir.sh ../configuracion.conf

24
detail/Conn.Respaldos.php Normal file
View file

@ -0,0 +1,24 @@
<?php
function ConectarRespaldos() {
$ini= array( 'user' => 'helpcom_user'
, 'pass' => 'ale2015rce'
, 'host' => '10.0.0.6'
, 'db' => 'db_trebol_respaldos'
);
if (!$ini) {
die("Error cargando la configuración de la sucursal.\n");
}
if (!($link=mysql_connect( $ini['host'], $ini['user'], $ini['pass'] ))) {
die("Error conectando al servidor.\n");
exit();
}
if (!mysql_select_db($ini['db'],$link))
{
die("Error abriendo la base de datos.\n");
exit();
}
return $link;
}
?>

27
detail/Maestros.php Normal file
View file

@ -0,0 +1,27 @@
<?php
function ConectarMaestro() {
$ini= array( 'user' => 'helpcom_db'
, 'pass' => 'helpcom211'
, 'host' => '10.0.0.4'
, 'db' => 'db_trebol_centralizado'
);
if (!$ini) {
die("Error cargando la configuración de la sucursal.\n");
}
if (!($link=mysql_connect( $ini['host'], $ini['user'], $ini['pass'] ))) {
die("Error conectando al servidor.\n");
exit();
}
if (!mysql_select_db($ini['db'],$link))
{
die("Error abriendo la base de datos.\n");
exit();
}
return $link;
}
function Version() {
return htmlspecialchars(@file_get_contents('./VERSION.txt'));
}
?>

1
mysqldump-error.log Normal file
View file

@ -0,0 +1 @@

52
public.key Normal file
View file

@ -0,0 +1,52 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.12 (GNU/Linux)
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
0KphVhKpHIKa+k7ClL/R
=KNku
-----END PGP PUBLIC KEY BLOCK-----

20
respaldar.sh Executable file
View file

@ -0,0 +1,20 @@
#!/bin/bash
set -eu
source ./configuracion.conf
HOY=$(date -d 'yesterday' '+%Y%m%d')
PASADO=$(date -d "now - ${EDADL}" '+%Y%m%d')
# mysqldump
date +'%Y%m%d %H:%M' >> fechas.txt
rm completed.txt || true
ARCHIVO=${DB}-${HOY}
ARCHIVOPASADO=${DB}-${PASADO}
mysqldump -u ${USER} -p${PASS} -v --log-error=mysqldump-error.log --opt \
${DB} > $ARCHIVO.sql
grep " Dump completed" $ARCHIVO.sql > completed.txt
gzip -9 $ARCHIVO.sql
date +'%Y%m%d %H:%M' >> fechas.txt
echo >> fechas.txt
rm ${DB}-${PASADO}.sql.gz || true

62
s3cfg.txt Normal file
View file

@ -0,0 +1,62 @@
[default]
access_key = AKIAIBILBDIMRQ5GTBEA
access_token =
add_encoding_exts =
add_headers =
bucket_location = US
cache_file =
cloudfront_host = cloudfront.amazonaws.com
default_mime_type = binary/octet-stream
delay_updates = False
delete_after = False
delete_after_fetch = False
delete_removed = False
dry_run = False
enable_multipart = True
encoding = UTF-8
encrypt = False
expiry_date =
expiry_days =
expiry_prefix =
follow_symlinks = False
force = False
get_continue = False
gpg_command = /usr/bin/gpg
gpg_decrypt = %(gpg_command)s -d --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_encrypt = %(gpg_command)s -c --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_passphrase = tre2014r
guess_mime_type = True
host_base = s3.amazonaws.com
host_bucket = %(bucket)s.s3.amazonaws.com
human_readable_sizes = False
ignore_failed_copy = False
invalidate_default_index_on_cf = False
invalidate_default_index_root_on_cf = True
invalidate_on_cf = False
list_md5 = False
log_target_prefix =
max_delete = -1
mime_type =
multipart_chunk_size_mb = 15
preserve_attrs = True
progress_meter = True
proxy_host =
proxy_port = 0
put_continue = False
recursive = False
recv_chunk = 4096
reduced_redundancy = False
restore_days = 1
secret_key = iHzuaqOElkIcKZzOx5tc1p8/K9PMbaiU8iYttBw/
send_chunk = 4096
server_side_encryption = False
simpledb_host = sdb.amazonaws.com
skip_existing = False
socket_timeout = 300
urlencoding_mode = normal
use_https = False
use_mime_magic = True
verbosity = WARNING
website_endpoint = http://%(bucket)s.s3-website-%(location)s.amazonaws.com/
website_error =
website_index = index.html

32
subir.sh Executable file
View file

@ -0,0 +1,32 @@
#!/bin/bash
set -eu
source ${1}
PATH=${PATH}:/usr/local/bin:
HOY=$(date -d 'yesterday' '+%Y%m%d')
PASADO=$(date -d "now - ${EDADR}" '+%Y%m%d')
# encriptar para subir
gpg -r ${KEYID} --trust-model always -e ${DB}-${HOY}.sql.gz
SUB_TAMANYO=$(ls -l ${DB}-${HOY}.sql.gz.gpg | tr -s ' ' | cut -f 5 -d ' ')
# genera un .sql.gz.gpg
LOG=log_$DB.txt
echo $HOY > $LOG;
echo ${DB}_${HOY}
# s3cmd para subir el respaldo
php ./api-cli.php INI "$DB" "$HOY:${SUB_TAMANYO}:0" | tee -a $LOG
s3cmd put ${DB}-${HOY}.sql.gz.gpg s3://${BUCKET}/ 2>&1 | tee _put.log
RESULT=${PIPESTATUS[0]}
if test $RESULT -gt 0;
then echo "Error: $RESULT; "
exit $RESULT
fi
s3cmd put completed.txt s3://${BUCKET}/
rm ${DB}-${HOY}.sql.gz.gpg || true
php ./api-cli.php FIN "$DB" "$HOY:$SUB_TAMANYO:$RESULT" | tee -a $LOG
s3cmd del s3://${BUCKET}/${DB}-${PASADO}.sql.gz.gpg || true
s3cmd ls -H s3://${BUCKET}/ > ls_${BUCKET}.log

4
trebol.mysqldump.sql Normal file
View file

@ -0,0 +1,4 @@
CREATE USER helpcom_back_up IDENTIFIED BY 'resp2014aldo';
GRANT SELECT, LOCK TABLES ON *.* TO helpcom_back_up;
FLUSH PRIVILEGES;

27
trebol.paquetes.txt Normal file
View file

@ -0,0 +1,27 @@
tzdata
aptitude
apt-file
mysql-server
mysql-utilities
unattended-upgrades
ntp
ntpdate
git
rsync
python-debian
python-dateutil
gnupg
gpgv
sshfs
sshpass
zip
unzip
p7zip
p7zip-full
s3cmd
pv
mc
screen
php5-cli
php5-curl