#!/bin/bash
#
# By Jose Luis Ramirez 2014/10/10
# Shell Script para transferencia de archivos via FTP
#
# ruta del log que registrara cada paso de esta shell
vLog=/home/monitoreo_alarmas/DetallesTotalesNavegacion/Log/LogEnvioFtp.log
#ejecutamos el archivo jar
echo "ejecutando archivo DetalleTotalesNavegacion.jar">> $vLog
java -jar DetalleTotalesNavegacion.jar >> $vLog
# datos del servidor FTP remoto
HOST='x.x.x.x'
USER='user'
PASS='*****'
#sacamos la fecha de hoy
TODAY=$(date)
echo "---------------------------------------" >> $vLog
echo "| Lectura de archivos |" >> $vLog
echo "| Date: $TODAY |" >> $vLog
echo "| Shell para enviar archivos via FTP. |" >> $vLog
echo "| Comando < PUT > de FTP. |" >> $vLog
echo "---------------------------------------" >> $vLog
echo " " >> $vLog
#El archivo a enviar tiene el siguiente nombre (archivo dinamico, generado por el proceso java que se ejecuto anteriormente):
#TotalesxAplicacion_ + la fecha de ayer
#ejemplo: TotalesxAplicacion_20141022
fechaActual=$(date --date="yesterday" +"%Y-%m-%d")
#nombre del archivo
archivo=TotalesxAplicacion_$fechaActual
echo "archivo enviado via FTP [$archivo] " >> $vLog
echo " " >> $vLog
echo "--------------------------------------------------" >> $vLog
echo "| Transferencia de Archivos via FTP |" >> $vLog
echo "| Iniciando Transferencia de archivos |" >> $vLog
echo "| Maquina Local ---> Maquina Remota) Via vFTP ...|" >> $vLog
echo "--------------------------------------------------" >> $vLog
sleep 3;
#sftp $USER@HOST << end
ftp -ivn <<end
open $HOST
user $USER $PASS
cd /opt/JONAS_4_10_9/logs/DetalleIvrTotales/
lcd /home/monitoreo_alarmas/DetallesTotalesNavegacion/Log/
bin
mput ${archivo}
rename ${archivo} ${archivo}.txt
quit
end
#Mueve archivos a carpeta de respaldo
#mv EPA* respaldo
echo " " >> $vLog
echo "-----------------------------" >> $vLog
echo "|Fin de la Transferencia ...|" >> $vLog
echo "-----------------------------" >> $vLog
echo " " >> $vLog
sleep 3;
exit 0
Mostrando entradas con la etiqueta consola. Mostrar todas las entradas
Mostrando entradas con la etiqueta consola. Mostrar todas las entradas
martes, 21 de octubre de 2014
Shell que ejecuta llava y envía archivo por ftp
martes, 30 de septiembre de 2014
Scrip shell consulta base de datos y guarda resultados a un archivo
En el siquiente ejemplo veremos como hacer consultas mediante un archivo bash y guardar los resultados en un archivo de texto plano, para esto ocuparemos Mysql y 4 tablas: Emrpesa, Llamadas, Opciones y Transacciones. Este archivo bash sacará en 3 archivos de texo la info de cada Llamada.
La estructura de cada tabla seria así:
Tabla Empresa
Descripción: Aquí se guardaran las distintas empresas telefónicas como Claro, Entel, Movistar, etc. y por cada una se hara un informe el cual tendra 3 archivos: Llamadas, Opciones y Transacciones.
id_empresa (autoincremental),
nombre_empresa
Tabla Llamadas:
Descripción: Registra cada llamda hecha al menú de autoatención de cada empresa.
id_llamada (autoincremental),
id_empresa,
duracion_total,
numero_origen,
numero_destino,
fecha_inicio,
fecha_fin
Tabla Opciones:
Descripción: Registra las opciones presinadas por el cliente al momento de llamar a la central (Menú de autoatención como por ejemplo Entel 103)
id_opcion (autoincremental)
id_llamada,
opcion_presionada
Tabla Transacciones:
Descripción : Cuando se presiona una opción del menú de autoatención, se gatillan transacciones, las cuales se registran en esta tabla.
id_trx (autoincremental),
id_llamada,
nombre_trx,
resultado,
duracion
nota: los campos que estan en negrita son referencias de otras tablas, por lo que la relacion entre estas tablas es de 1 a muchas.
Generamos el archivo bash que se guarda con extención .sh, ejemplo: informe.sh y se puede ejecutar así:
1) ./informe.sh
2) sh informe.sh
3) bash informe.sh
Nota: este codigo fue testeado en un Shell, pero se cambiaron las tablas de las consultas, las cuales no estan testeadas, por lo que puede existir un error de consultas.
La estructura de cada tabla seria así:
Tabla Empresa
Descripción: Aquí se guardaran las distintas empresas telefónicas como Claro, Entel, Movistar, etc. y por cada una se hara un informe el cual tendra 3 archivos: Llamadas, Opciones y Transacciones.
id_empresa (autoincremental),
nombre_empresa
Tabla Llamadas:
Descripción: Registra cada llamda hecha al menú de autoatención de cada empresa.
id_llamada (autoincremental),
id_empresa,
duracion_total,
numero_origen,
numero_destino,
fecha_inicio,
fecha_fin
Tabla Opciones:
Descripción: Registra las opciones presinadas por el cliente al momento de llamar a la central (Menú de autoatención como por ejemplo Entel 103)
id_opcion (autoincremental)
id_llamada,
opcion_presionada
Tabla Transacciones:
Descripción : Cuando se presiona una opción del menú de autoatención, se gatillan transacciones, las cuales se registran en esta tabla.
id_trx (autoincremental),
id_llamada,
nombre_trx,
resultado,
duracion
nota: los campos que estan en negrita son referencias de otras tablas, por lo que la relacion entre estas tablas es de 1 a muchas.
Generamos el archivo bash que se guarda con extención .sh, ejemplo: informe.sh y se puede ejecutar así:
1) ./informe.sh
2) sh informe.sh
3) bash informe.sh
#!/bin/bash
user="usuario"
pass="xxxxxx"
db="BaseDeDatoAConectarMysql"
#opcines de columnas en Mysql
opc="--skip-column-names"
#Se necesita que el archivo tenga en su nombre la fecha de ayer
fecha=$(date --date="yesterday" +"%Y%m%d")
#Se quiere 3 informes que sean del dia anterior, ejemplo si hoy es 02/08/2014, entonces#se requiere un informe de todo el día de ayer de '01/08/2014' hasta '01/08/2014 23:59:59'#ponermos el intervalo de dias en -1 para restar un dia
intervalo="-1"
#se crea consulta y conexion a mysql. Esta obtiene todas las empresas que seran consultadas #empresa de telefonia (Tabla Empresa).
dbquery=$(mysql -u $user -p$pass $opc -e "use $db;SELECT id_empresa FROM Empresa ")
#se guardan los resultados en un array
arrayApp=($(for i in $dbquery;do echo $i;done))
#corroboramos que esten todos los datos en el array. Descomentar la siguiente linea
#echo ${arrayApp[@]};
#se recorre el array para ejecutar las querys
for i in ${arrayApp[@]}
do
nameFile1="_llamadas_$fecha.txt";
query="SELECT LLA.id_llamada ID_LLAMADA,
LLA.id_empresa ,
LLA.duracion_total ,
LLA.numero_origen,
LLA.numero_destino,
LLa.fecha_inicio,
LLA.fecha_fin,
INTO OUTFILE '/rutaDondeSeGuardara/$i$nameFile1' FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n'
FROM LLAMADAS LLA
WHERE LLA.fecha_inicio>= (CURDATE()$intervalo - INTERVAL 0 DAY + INTERVAL 0 SECOND)
AND LLA.fecha_fin<= (CURDATE()$intervalo - INTERVAL 0 DAY + INTERVAL 86399 SECOND)
AND LLA.id_empresa='$i'
ORDER BY LLa.fecha_inicio ASC;";
mysql -u $user -p$pass -e "use $db;$query"
nameFile2="_opciones_$fecha.txt";
query="SELECT OPC.id_llamada ID_LLAMADA,
OPC.OPCION OPCION
INTO OUTFILE '/rutaDondeSeGuardara/$i$nameFile2' FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n'
FROM OPCIONES OPC,
LLAMADAS LLA
WHERE LLA.fecha_inicio >= (CURDATE()$intervalo - INTERVAL 0 DAY + INTERVAL 0 SECOND)
AND LLA.fecha_fin <= (CURDATE()$intervalo - INTERVAL 0 DAY + INTERVAL 86399 SECOND)AND LLA.id_empresa='$i'
AND LLA.id_llamada=OPC.id_llamadaORDER BY LLA.fecha_inicio ASC;";
mysql -u $user -p$pass -e "use $db;$query";
nameFile3="_transac_$fecha.txt";
query="SELECT TRX.id_llamada ID_LLAMADA,
TRX.nombre_trx,
TRX.resultado,
TRX.duracion
INTO OUTFILE '/rutaDondeSeGuardara/$i$nameFile3' FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n'
FROM Llamadas LLA,
Transacciones TRX
WHERE LLA.fecha_inicio >= (CURDATE()$intervalo - INTERVAL 0 DAY + INTERVAL 0 SECOND)
AND LLA.fecha_fin <= (CURDATE()$intervalo - INTERVAL 0 DAY + INTERVAL 86399 SECOND)AND LLA.id_empresa='$i'
AND LLA.id_llamada=TRX.id_llamada
ORDER BY LLA.fecha_inicio ASC";
mysql -u $user -p$pass -e "use $db;$query";
done
Nota: este codigo fue testeado en un Shell, pero se cambiaron las tablas de las consultas, las cuales no estan testeadas, por lo que puede existir un error de consultas.
viernes, 2 de mayo de 2014
Script bach que ejecuta una sentencia Mysql
A continuación un script que ejecuta sentencia Mysql
#!/bin/bash
#crea archivo log, donde dice ruta ponemos la ruta donde queremos que este
touch /ruta/operacion.log
#permisos del archivo
chmod 755 /ruta/operacion.log
#usuario del archivo
chown miusuario:miusuario operacion.log
echo -e "*********COMIENZA ************" >> /ruta/operacion.log
#le ponemos la fecha de ejecucion
date >> /ruta/operacion.log
#conexion y consulta a la DB, en caso de que devuelva algo lo tiramos al log
mysql -u root -ppassword basedato -e "SELECT NOW();" >> /ruta/operacion.log
echo -e "*********FIN ****************" >> /home/encuestasIVR/operacion.log
Suscribirse a:
Entradas (Atom)