Autor YouCode - http://www.youcode.com.ar/el-baul/script-en-bash-para-obtener-la-cotizacion-del-dolar-billete-y-divisa-del-bna-513
Este script baja la cotización del dólar desde la pagina del BNA y la inserta en MySql, también crea un archivo JSON
Este script en bash lo pueden ejecutar desde un cron, mi cron esta de esta forma:0 10-15 * * 1-5 /mi_carpeta/./dolarbna.shLe digo que se ejecute de 10hs a 15hs (que es el horario bancario) y solo de lunes a viernes (1-5)
#!/bin/bash #Baja la cotizacion del dolar desde la pagina del BNA ARCHIVO="dolarBNAFuente.txt" DESTINO="/var/www/html/TU_SITIO/dolarBNA.json" #Elimino el archivo, sino va llenandolo y es lo que no queremos rm dolarBNAFuente.txt #Bajo desde la pagina del BNA y el grep me trae la parte del html que me interesa, #luego lo guardo en un archivo txt. curl -s https://www.bna.com.ar/Personas | grep -A 2 'Dolar U.S.A' >> dolarBNAFuente.txt if [ $? -ne 0 ]; then exit 0 fi #con cat y todos los demas comandos, extraigo los valores de los diferentes dolares. DOLARB_COMPRA=$(cat $ARCHIVO | head -2 | tail -1 | sed 's/<//g' | sed 's/>//g' | sed 's/td//g' | sed 's/,/./g' | sed 's/ //g' | rev| cut -b 3-|rev) DOLARB_VENTA=$(cat $ARCHIVO | grep -A 2 'Dolar U.S.A' | head -3 | tail -1 | sed 's/<//g' | sed 's/>//g' | sed 's/td//g' | sed 's/,/./g' | sed 's/ //g' | rev| cut -b 3-|rev) DOLARD_COMPRA=$(cat $ARCHIVO | grep -A 2 'Dolar U.S.A' | head -6 | tail -1 | sed 's/<//g' | sed 's/>//g' | sed 's/td//g' | sed 's/,/./g' | sed 's/ //g' | rev| cut -b 3-|rev) DOLARD_VENTA=$(cat $ARCHIVO | grep -A 2 'Dolar U.S.A' | head -7 | tail -1 | sed 's/<//g' | sed 's/>//g' | sed 's/td//g' | sed 's/,/./g' | sed 's/ //g' | rev| cut -b 3-|rev) #Preparo los datos de conexion a mi base de datos DBHOST="localhost"; USER="USUARIO_db"; PASS='CLAVE_db'; #Preparo el INSERT, pero noten que si el registro ya existe, le digo que lo actualice QUERY="insert into TU_BASE.cotizaciones values(1,$DOLARB_COMPRA,$DOLARB_VENTA,$DOLARD_COMPRA,$DOLARD_VENTA,CURDATE(),CURTIME(),NOW()) ON DUPLICATE KEY UPDATE dolar_billete_compra=$DOLARB_COMPRA, dolar_billete_venta=$DOLARB_VENTA, dolar_divisa_compra=$DOLARD_COMPRA, dolar_divisa_venta=$DOLARD_VENTA,fecha_update=curdate(),hora_update=curtime(),fecha_hora=now();"; #Inserto en la base la cotizacion (mysql -N -h "$DBHOST" -u "$USER" -p"$PASS" -e "$QUERY" 2> /dev/null) #Creo el archivo JSON por si quiero tenerlo para levantarlo con PHP o lo que esten usando. JSON_FMT='{"DOLARB_COMPRA":"%s","DOLARB_VENTA":"%s","DOLARD_COMPRA":"%s","DOLARD_VENTA":"%s"}' printf "$JSON_FMT" "$DOLARB_COMPRA" "$DOLARB_VENTA" "$DOLARD_COMPRA" "$DOLARD_VENTA" > $DESTINO
Esta es la estructura de la tabla, el campo idregistro es la KEY pero NO es auto-increment !
CREATE TABLE cotizaciones ( idregistro int NOT NULL DEFAULT 1, dolar_billete_compra double(10, 2) DEFAULT 0.00, dolar_billete_venta double(10, 2) DEFAULT 0.00, dolar_divisa_compra double(10, 2) DEFAULT 0.00, dolar_divisa_venta double(10, 2) DEFAULT 0.00, fecha_update date DEFAULT NULL, hora_update time DEFAULT NULL, fecha_hora datetime DEFAULT NULL, PRIMARY KEY (idregistro) )
http://www.youcode.com.ar/el-baul/script-en-bash-para-obtener-la-cotizacion-del-dolar-billete-y-divisa-del-bna-513