Push inicial con estructura de archivos desde servidor CV
This commit is contained in:
parent
4fa062a28b
commit
1d703c0cca
14 changed files with 386 additions and 0 deletions
6
actualizar_gestor.sh
Executable file
6
actualizar_gestor.sh
Executable 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
84
api-cli.php
Executable 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
18
configuracion.conf_
Normal 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
27
consultas_gestor.sql
Normal 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
2
crontab.txt
Normal 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
24
detail/Conn.Respaldos.php
Normal 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
27
detail/Maestros.php
Normal 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
1
mysqldump-error.log
Normal file
|
@ -0,0 +1 @@
|
|||
|
52
public.key
Normal file
52
public.key
Normal 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
20
respaldar.sh
Executable 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
62
s3cfg.txt
Normal 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
32
subir.sh
Executable 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
4
trebol.mysqldump.sql
Normal 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
27
trebol.paquetes.txt
Normal 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
|
||||
|
Loading…
Add table
Reference in a new issue