Linux/Unix Shell Scripting - scripts de consultas a mysql y mandar mail

 
Vista:

scripts de consultas a mysql y mandar mail

Publicado por nerelaya (4 intervenciones) el 06/05/2009 13:12:56
Hola!!
Estoy utilizando linux y haciendo una pagina web de una biblioteca online como proyecto de fin de carrera y necesito realizar una comprobacion diaria a la base de datos mysql. No entiendo mucho de scripts y soy nueva con ellos.

Para ello se que he de escribir un script y que este luego se ha de poner en el cron del crontab, creo.

Pero la cuestion es que tengo que realizar dos cosas, la primera es recorrer toda la tabla de prestamos de la base de datos para comprobar si se ha entregado el libro el dia que le corresponde. Es decir, su fecha de entrega es, por ejemplo, el 7 de mayo de 2009 y quiero recorrer toda la tabla y si estamos a ese dia y no se ha entregado el libro poner un No devuelto. Lo cual no se si se puede hacer.

Y la segunda cuestion, es que tambien tengo que recorrer la base de datos mirar los libros que estan prestados y avisar al usuario tres dias antes de la fecha de entrega que tiene que entregar el libro esa fecha mediante un mail (el cual esta guardado en un servidor ldap).Se podria hacer esto?

Alguien podria indicarme como se pueden realizar estas dos partes, es que no encuentro nada que me aclare como realizarlo.Es que todo lo que encuentro es para hacer buckups... Es urgente!

Os agradeceria si me respondieras y me dierais algun tipo de ejemplo de como realizarlo.

Muchas gracias de antemano.
Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:scripts de consultas a mysql y mandar mail

Publicado por Manu (3 intervenciones) el 07/05/2009 11:23:55
Hola,

Con respecto a mysql en la web http://dev.mysql.com/doc/refman/5.0/es/mysql.html en 8 Programas cliente y utilidades MySQL # 8.3 La herramienta intérprete de comandos mysql

Parece que si haces algo del tipo:

mysql --user=${USUARIO} --password=${PWD} < script.sql > output.tab

Cuando el script está escrito en sql devuelve la salida a output.tab, imagino que para almacenar el valor en una variable solo seria necesario algo parecido a esto:

mivar=`mysql --user=${USUARIO} --password=${PWD} < script.sql`

Si los correos los quieres mandar a cuentas de usuarios de la misma maquina (te dejan tocar la maquina de ldap) y es linux con el mailx te vale

Si es a traves de red, para enviar el correo necesitaras un programa de envio de correo como sendmail o postfix, el ldap no deberia ser un problema para configurarlos, y para enviar por internet te hara falta un smtp..

Espero que te sirva de algo,
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:scripts de consultas a mysql y mandar mail

Publicado por nerelaya (4 intervenciones) el 07/05/2009 12:28:19
Hola!

Pero por ejemplo en la pagina que me has indicado tu de mysql, comenta que se ha de crear un fichero de texto con las sentencias sql que necesites. Y no comprendo muy bien esto. Ya que en primer lugar quiero acceder a la bbdd y consultar una fecha, compararla y luego hacer una actualizacion. Entonces en ese fichero de texto no comprendo como poner dichas sentencias ya que se necesitan variables para hacer las comparaciones y todo eso, entonces no se pueden usar directamente la sentencias tal cual se usan en mysql. Podrias decirme como se podria hacer u otra pagina donde se explique mejor, es que no encuentro nada que explique algo aunque sea un poco parecido.

Aunque, por ejemplo, en el cron de linux entenderia que se tiene que poner una comando como el siguiente para que realice lo del fichero de texto el dia y la hora deseada.

Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:scripts de consultas a mysql y mandar mail

Publicado por nerelaya (4 intervenciones) el 07/05/2009 12:29:07
se me ha olvidado poner la sentencia que seria esta:

mysql nombre_base_de_datos < fichero_de_texto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:scripts de consultas a mysql y mandar mail

Publicado por nerelaya (4 intervenciones) el 10/05/2009 12:20:18
Hola!!
Quiero hacer un script que me recorra toda una tabla de la base de datos (la tabla de prestamos de libros) y que si no se ha entregado un libro se actualice un atributo de la tabla. Para ello, primero estoy intentando entender como hacer el sript ya que soy nueva con ello y no consigo que me funcione. Lo que pretencia hacer es que la respuesta a la consulta a la bbdd se guarde en un array y luego recorrer este con un for para ir haciendo las actualizaciones. Pero el codigo no me funciona ya que no me reconoce la variable.

El codigo de prueba realizado es:

#!/bin/sh
####Definimos lor parametros de conexion a la BBDD mysql
SQL_HOST="localhost"
SQL_USER="root"
SQL_PASSWORD=""
SQL_DATABASE="biblio"
SQL_ARGS="-h $SQL_HOST -u $SQL_USER -p$SQL_PASSWORD $SQL_DATABASE -s -e"
#### Montamos la sentencia SQL y la lanzamos
cosa =$mysql $SQL_ARGS 'SELECT * FROM reserva;'
echo ${cosa[@]}
Para guardar los cinco valores en de la tabla en un array y luego visualizarlos. Pero me sale el siguiente error:
nita@nita-desktop:~$ ./prueba.sh
./prueba.sh: 10: cosa: not found
./prueba.sh: 11: Bad substitution
cuando pongo:
declare -a cosa o typeset-a cosa
Tambien me pone que no encuentra declare y typeset.
Por otra parte, no entiendo luego como hacer el for y sacar los resultado 1 por 1, para hacer la actualizacion.
Podiras indicarme como realizarlo??
Muchas gracias de antemano.
Alguien podria ayudarme, x favor!!!!!!!!!!!!!!!!!!!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:scripts de consultas a mysql y mandar mail

Publicado por javier (1 intervención) el 07/01/2012 03:23:18
hola!, el problema es que

cosa =$mysql $SQL_ARGS 'SELECT * FROM reserva;'

en BASH (la linea de comandos de linux) no anda,
si queres que 'cosa' sea instanciado como variable para recibir el resultado de la instrucción de la derecha, debe ir el IGUAL sin espacios

cosa= kdjvnjknvcscnslc


saludos,
Javier
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:scripts de consultas a mysql y mandar mail

Publicado por Kable (1 intervención) el 20/06/2009 00:35:37
HOLA!!

lei alog de tu msg yo voy a hacer un pryecto similar
al de una aplicaicon web me podrias ayudar o darme un consejo de como empezaR??

mi mailes [email protected]

Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:scripts de consultas a mysql y mandar mail

Publicado por EDU (1 intervención) el 01/12/2011 19:59:50
echo "Inicio del Proceso de Volcado " 'date'


SQL_ARGS="-h $SQL_HOST -u $SQL_USER --password=$SQL_PASSWORD -D $SQL_DATABASE -s -e"


cd /mnt/ude/procesadas

#Guardo los ORs que quiero

ors[0]=0;


ors=$( mysql $SQL_ARGS "select cdOrganosRegistrales from organosregistrales where organosregistrales.EstadoOR=10";)


for or in ${ors[@]}
do

du -hsc $or*.tar >> /mnt/backups/aBorrar_EDU.txt
cp -r $or*.tar /mnt/apache/backups/Respaldo_EDU/
cp -r $or*_testigo /mnt/apache/backups/Respaldo_EDU/

done

mysql $SQL_ARGS "update organosregistrales set cdOrganosRegistrales = 11 where cdOrganosRegistrales = 10";
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar