--- /dev/null
+$Id$
+
+Carga de novedades en bases de datos de servidores de intranet.
+
+Directorio 'datos':
+ En este directorio se copian (previo ser procesados de ser necesario)
+ los archivos de datos a subir a las DB. El nombre del archivo debe
+ coincidir con el nombre de la tabla a donde va a ser subido y su
+ contenido debe ser un archivo con los campos separados por comas y las
+ filas separadas por '\n', siendo la primera fila una descripción que es
+ ignorada.
+Directorio 'cargas_de_datos':
+ En este directorio hay scripts que copian y/o procesan los archivos de
+ datos de su ubicación original al directorio 'datos' para que puedan
+ ser subidos a las DB correctamente.
+Directorio 'cargas':
+ Esta compuesto por subdirectorios, típicamente con la siguiente
+ estructura:
+ 'carga': Es un script que debe existir siempre que se quiera
+ que este subdirectorio se procese automáticamente.
+ 'scripts': Scripts que se ejecutan en la carga, a través de
+ run-parts(8) por lo que sigue sus reglas.
+Directorio 'backups':
+ Aquí se deja un backup comprimido de cada carga diaria (antes de
+ procesar nada).
--- /dev/null
+#!/bin/sh
+# Parámetros de la línea de comandos.
+home="$1"
+origen="$2"
+datos="$3"
+
+# Configuración.
+host="intranet-db.mecon.ar"
+dir="$home"/backups
+targz="$dir"/`date +%Y%m%d`.tar.gz
+
+# Script.
+echo "Haciendo backup en $targz"
+files=""
+for f in `ls "$datos"`; do
+ nombre=`basename "$f" | awk -F\\. '{ print $1 }'`
+ files="$files $nombre"
+done
+cd "$origen"
+tar -cvzf "$targz" $files
+scp -1 -r "$targz" novedades@"$host":"$dir"
--- /dev/null
+#!/bin/sh
+#
+# Script para ejecutar todos los sql de un directorio.
+#
+# Creado por Leandro Lucarella (llucar) el mié ene 22 18:20:06 ART 2003
+#
+
+# Parámetros de la línea de comandos.
+home="/home/novedades/sql"
+datos="$home/datos"
+cargas="$home/cargas"
+log="$home/carga.log"
+origen="/home/novedades"
+
+# Script.
+echo >> "$log"
+echo "===================================================================" >> "$log"
+echo >> "$log"
+date >> "$log"
+echo >> "$log"
+echo "Hace un backup de los datos originales" >> "$log"
+"$home"/backup "$home" "$origen" "$home"/cargas_de_datos >> "$log" 2>&1
+echo >> "$log"
+echo "Comienza la carga de la base de datos" >> "$log"
+echo >> "$log"
+echo "Cargando y procesando archivos de datos..." >> "$log"
+run-parts --verbose --arg="$origen" --arg="$datos" --arg="$home" \
+ "$home/cargas_de_datos" >> "$log" 2>&1
+echo "Procesando '$cargas'..." >> "$log" 2>&1
+for dir in `ls "$cargas" | sort`; do
+ echo "- Cargando '$dir'..." >> "$log" 2>&1
+ "$cargas/$dir/carga" "$cargas/$dir" "$datos" >> "$log" 2>&1
+done
+echo >> "$log"
+echo >> "$log"
+echo "Fin de la carga!" >> "$log"
+date >> "$log"
--- /dev/null
+#!/bin/sh
+#
+# Script para cargar bases de datos.
+#
+# Creado por Leandro Lucarella (llucar) el mié ene 22 17:57:00 ART 2003
+#
+
+# Configuración.
+home="$1"
+datos="$2"
+host="intranet-db"
+user="intranet"
+pass="intranet"
+db="novedades"
+
+# Script.
+/bin/run-parts \
+ --verbose \
+ --arg="$host" \
+ --arg="$user" \
+ --arg="$pass" \
+ --arg="$db" \
+ --arg="$home" \
+ --arg="$datos" \
+ "$home/scripts"
--- /dev/null
+#!/bin/sh
+host="$1"
+user="$2"
+pass="$3"
+db="$4"
+home="$5"
+datos="$6"
+
+ssh -1 novedades@"$host" rm -vf "$datos"/codep
--- /dev/null
+#!/bin/sh
+host="$1"
+user="$2"
+pass="$3"
+db="$4"
+home="$5"
+datos="$6"
+
+scp -1 -r "$datos"/* novedades@"$host":"$datos"
+#ssh -1 novedades@"$host" chmod -vR 664 "$datos"
--- /dev/null
+#!/bin/sh
+host="$1"
+user="$2"
+pass="$3"
+#db="$4"
+db="CODEP"
+home="$5"
+datos="$6"
+
+cat <<EOT | mysql -h"$host" -u"$user" -p"$pass" "$db"
+SELECT
+ codigo_actual, nombre_breve
+INTO OUTFILE
+ '$datos/codep'
+FIELDS TERMINATED BY
+ ','
+LINES TERMINATED BY
+ '\n'
+FROM
+ Dependencias;
+EOT
--- /dev/null
+#!/bin/sh
+host="$1"
+user="$2"
+pass="$3"
+db="$4"
+home="$5"
+datos="$6"
+
+"$home/../../run-sql-data-parts" "$host" "$user" "$pass" "$db" "$datos"
--- /dev/null
+#!/bin/sh
+host="$1"
+user="$2"
+pass="$3"
+db="$4"
+home="$5"
+datos="$6"
+
+scp -1 -r novedades@"$host":"$datos"/codep "$datos"
--- /dev/null
+#!/bin/sh
+#
+# Script para cargar bases de datos.
+#
+# Creado por Leandro Lucarella (llucar) el mié ene 22 17:57:00 ART 2003
+#
+
+# Configuración.
+home="$1"
+datos="$2"
+host="localhost"
+user="intranet"
+pass="intranet"
+db="novedades"
+
+# Script.
+/bin/run-parts \
+ --verbose \
+ --arg="$host" \
+ --arg="$user" \
+ --arg="$pass" \
+ --arg="$db" \
+ --arg="$home" \
+ --arg="$datos" \
+ "$home/scripts"
--- /dev/null
+#!/bin/sh
+host="$1"
+user="$2"
+pass="$3"
+db="$4"
+home="$5"
+datos="$6"
+
+"$home/../../run-sql-data-parts" "$host" "$user" "$pass" "$db" "$datos"
--- /dev/null
+#!/usr/bin/php4 -qC
+<?
+
+error_reporting( E_ALL );
+
+$origen = isset( $argv[1] ) ? $argv[1] : '.';
+$destino = isset( $argv[2] ) ? $argv[2] : '.';
+$libdir = isset( $argv[3] ) ? $argv[3] : getcwd();
+
+require_once "$libdir/corregir_lib.php";
+
+$fi = fopen( "$origen/web019", 'r' );
+$fo = fopen( "$destino/parciales", 'w' );
+$fe = fopen( 'php://stderr', 'w' );
+
+$s = fgets( $fi ); // Saca la descripción.
+fputs( $fo, "nrodoc,fecha,desde,hasta,novedad\n" );
+$c = 1;
+while ( ( $s = fgets( $fi ) ) !== false ) {
+ if ( preg_match( '/^(\d{10}),([^,]+),(\d{8}),([^,]*),([^,]*),$/', $s, $m ) ) {
+# if ( preg_match( '/^(\d{10}),([^,]+),(\d{8}),([:\d]*),([:\d]*),$/', $s, $m ) ) {
+ list( $todo, $doc, $nov, $fecha, $desde, $hasta ) = $m;
+ $doc = sacar_ceros( $doc );
+ $fecha = invertir_fecha( $fecha );
+ $desde = corregir_hora( $desde );
+ $hasta = corregir_hora( $hasta );
+ $nov = strtolower( $nov );
+ fputs( $fo, "$doc,$fecha,$desde,$hasta,$nov\n" );
+ } else {
+ fputs( $fe, "ERROR: No se pudo interpretar la fila $c: $s.\n" );
+ }
+ $c++;
+}
+
+?>
--- /dev/null
+#!/usr/bin/php4 -qC
+<?php
+
+error_reporting(E_ALL);
+
+$origen = isset( $argv[1] ) ? $argv[1] : '.';
+$destino = isset( $argv[2] ) ? $argv[2] : '.';
+$libdir = isset( $argv[3] ) ? $argv[3] : getcwd();
+
+require_once "$libdir/corregir_lib.php";
+
+$fi = fopen( "$origen/webfer", 'r' );
+$fo = fopen( "$destino/feriados", 'w' );
+$fe = fopen( 'php://stderr', 'w' );
+
+$s = fgets( $fi ); // Saca la descripción.
+fputs( $fo, "fecha,desc,tipo,hora\n" );
+$c = 1;
+while ( ( $s = fgets( $fi ) ) !== false ) {
+ if ( preg_match( '/^(\d{8}),([^,]+),([^,]?),(\d{4}),$/', $s, $m ) ) {
+ #if ( preg_match( '/^(\d{10}),([^,]+),(\d{8}),([:\d]*),([:\d]*),$/', $s, $m ) ) {
+ list( $todo, $fecha, $desc, $tipo, $hora ) = $m;
+ $fecha = invertir_fecha( $fecha );
+ $hora = corregir_hora( $hora );
+ $tipo = corregir_feriado( $tipo );
+ $desc = corregir_descripcion( $desc );
+ fputs( $fo, "$fecha,$desc,$tipo,$hora\n" );
+ } else {
+ fputs( $fe, "ERROR: No se pudo interpretar la fila $c: $s.\n" );
+ }
+ $c++;
+}
+
+?>
--- /dev/null
+#!/usr/bin/php4 -qC
+<?
+
+error_reporting(E_ALL);
+
+$origen = isset( $argv[1] ) ? $argv[1] : '.';
+$destino = isset( $argv[2] ) ? $argv[2] : '.';
+$libdir = isset( $argv[3] ) ? $argv[3] : getcwd();
+
+require_once "$libdir/corregir_lib.php";
+
+$fi = fopen( "$origen/webgen", 'r' );
+$fo = fopen( "$destino/estado", 'w' );
+$fe = fopen( 'php://stderr', 'w' );
+
+$s = fgets( $fi ); // Saca la descripción.
+fputs( $fo, "nrodoc,dependencia,estado,funcion\n" );
+$c = 1;
+while ( ( $s = fgets( $fi ) ) !== false ) {
+ if ( preg_match( '/^(\d{10}),(SCA|SAS|CAS),(AD|CA|SG|SE|ME|MA|MY|PL),(\d{10}),$/', $s, $m ) ) {
+ #if ( preg_match( '/^(\d{10}),([^,]+),(\d{8}),([:\d]*),([:\d]*),$/', $s, $m ) ) {
+ list( $todo, $doc, $est, $func, $dep ) = $m;
+ $doc = sacar_ceros( $doc );
+ fputs( $fo, "$doc,$dep,$est,$func\n" );
+ } else {
+ fputs( $fe, "ERROR: No se pudo interpretar la fila $c: $s.\n" );
+ }
+ $c++;
+}
+
+?>
--- /dev/null
+#!/bin/sh
+#
+# Script para copiar un archivo deduciendo el nombre del nombre del propio
+# script.
+#
+# Creado por Leandro Lucarella (llucar) el jue ene 23 17:22:03 ART 2003
+#
+
+# Parámetros de la línea de comandos.
+origen="$1"
+destino="$2"
+libdir="$3"
+
+# Script.
+nombre_orig=`basename "$0" | awk -F\\. '{ print $1 }'`
+nombre_nuevo=`basename "$0" | awk -F\\. '{ print $2 }'`
+if [ -z "$nombre_orig" ]; then
+ nombre_nuevo=`basename "$0"`
+fi
+cp -fv "$origen/$nombre_orig" "$destino/$nombre_nuevo"
--- /dev/null
+<?
+
+// Le saca los ceros (y otros posibles caracteres).
+function sacar_ceros($doc) {
+ return intval($doc);
+}
+
+// Invierte la fecha para que pueda ser interpretada por MySQL.
+function invertir_fecha($fecha) {
+ return preg_replace('/(\d{2})(\d{2})(\d{4})/', '\3\2\1', $fecha);
+}
+
+// Corrige las horas.
+function corregir_hora($hora) {
+ preg_match('/([^:]{0,2})(:?)([^:]{0,2})/', $hora, $m);
+ return sprintf('%02d:%02d', sacar_ceros($m[1]), sacar_ceros($m[3]));
+}
+
+// Corrige el tipo de feriado.
+function corregir_feriado($tipo) {
+ switch ($tipo) {
+ case 'N':
+ return 'no laborable';
+ case 'A':
+ return 'asueto';
+ case 'F':
+ default:
+ return 'feriado';
+ }
+}
+
+// Corrige la descripción.
+function corregir_descripcion($desc) {
+ return strtr($desc, '#', 'Ñ');
+}
+
+?>
--- /dev/null
+#!/bin/sh
+#
+# Script para ejecutar todos los sql de un directorio.
+#
+# Creado por Leandro Lucarella (llucar) el mié ene 22 18:20:06 ART 2003
+#
+
+# Parámetros de la línea de comandos.
+host="$1"
+user="$2"
+pass="$3"
+db="$4"
+home="$5"
+
+# Script.
+echo "Procesando '$home'..."
+for file in `ls "$home"`; do
+ echo "- Cargando '$file'..."
+ cat <<EOT | mysql -h"$host" -u"$user" -p"$pass" "$db"
+ delete from $file;
+ load data infile '$home/$file'
+ replace into table $file
+ fields terminated by ','
+ lines terminated by '\n'
+ ignore 1 lines;
+EOT
+done
--- /dev/null
+#!/bin/sh
+#
+# Script para ejecutar todos los sql de un directorio.
+#
+# Creado por Leandro Lucarella (llucar) el mié ene 22 18:20:06 ART 2003
+#
+
+# Parámetros de la línea de comandos.
+host="$1"
+user="$2"
+pass="$3"
+db="$4"
+home="$5"
+
+# Script.
+echo "Procesando '$home'..."
+for sql in `ls "$home"/*.sql | sort`; do
+ echo "- Ejecutando '$sql'..."
+ mysql -h"$host" -u"$user" -p"$pass" "$db" < "$sql"
+done