
Algo que siempre me gustó de servicios como DropBox, Google Drive y OneDrive es el bajo costo por 1TB de disco, sumado a la facilidad que tenemos para acceder desde una PC, smartphone o tablet.
Vuelvo a recalcar que soy un ferviente defensor de los cartucho de cinta, pero hay casos en que es más práctico salvar a disco o mejor aún, a la nube. Tal es el caso de ambientes de desarrollo y/o PoCs, ya que normalmente podemos recuperarnos de un desastre con respaldos en cinta antiguos o incluso podemos reconstruirlos desde SAVF sin mucha dificultad, en la mayoría de los casos.
Lo que si necesitamos es tener esos respaldos a mano, porque nunca falta un programador que quiere una versión de hace 2 meses cuando no había realizado cierto cambio, o cuando decidió depurar información.
Obviamente la capacidad de un cartucho es enorme, pero a veces se vuelve poco práctico cuando queremos simplemente un archivo entre múltiples bibliotecas salvadas, múltiples sesiones de infinidad de días. Muchas veces hay que pedir a los operadores de Iron Mountain/AdeA/AAA/etc que nos envíen los cartuchos, lo cual podría incluso significar un costo de maniobras, y las autorizaciones pueden demorarse, todo por un simple archivo.
No sería fantástico poder salvar a SAVF, comprimir a ZIP o 7ZIP y subir a Dropbox? No sería bueno poder subir reportes en PDF a Dropbox y enviarle la liga al gerente que lo solicita?
En este momento 2TB de Dropbox for Business ronda los 12.50 USD por mes por usuario (mínimo 3) , lo cual lo vuelve una opción muy interesante.
El problema muchas veces con los servicios en la nube son los complejos sistemas de validación, que muchas veces necesitan que nos firmemos mediante un browser para mostrarnos una imagen de captcha o similar. O peor aún, que funcionan con programas o APIs sumamente complejas.
Volviendo a lo que nos interesa, el IBM i , me puse a investigar la forma de emplear Python para subir el archivo, ya que contamos con 5733-OPS, pero fue una decepción... hace algunos meses varios proveedores (Google, Microsoft, Dropbox) cambiaron los mecanismos de autenticación , lo cual volvió obsoletos a los scripts creados para subir información.
Sin embargo, y como no suelo rendirme fácilmente, decidí investigar otros mecanismos como cULR. Este comando es una verdadera maravilla, ya que permite descargar archivos de una página, subir archivos, interactuar con webservices, enviar correos, etc.
Encontré varias referencias de antiguos mecanismos para subir archivos usando cURL, pero ya eran obsoletos. Sin embargo, y luego de investigar un poco, llegué a un ejemplo para Linux de Andrea Fabrizi. Básicamente es un shell script para BASH (si, también tenemos BASH en IBMi) donde emplea cURL y una serie de herramientas adicionales para enviar archivos. Y lo más interesante es que también podría funcionar en AIX.
Este script debí modificarlo dado que algunas herramientas no existen en IBMi, pero realmente han sido pequeños ajustes.
Lo primero que debemos hacer es registrar una aplicación en DropBox, como si fueramos programadores. Esto es para que nos provean de un Token, una cadena de caracteres que nos permitirá firmarnos de forma automática.
1) Ir a la siguiente dirección
2) Hacer click en Create App y seleccionar DropBox API, Full Dropbox, indicar un nombre de la aplicación y aceptar el acuerdo. Luego aceptar
3) En la próxima pantalla dar click en Generate access token y guardar el valor que aparecerá. Ese valor lo necesitaremos la primera vez que corramos el programa. Es el token que nos permitirá firmarnos.
Ahora vamos a conectarnos por SSH a nuestro equipo IBM i. Para ello debemos tener correctamente instalado el producto 5733-SC1 y el servicio iniciado. En un artículo anterior está el detalle IBM i (iSeries, AS/400, i5) , SSH , SFTP y BASH. Agregando la flexibilidad de Linux en IBM i
Lo siguiente es subir el script de la liga al equipo (es muy largo para pegarlo como snippet)
Se debe ejecutar una primera vez de forma manual, para poder asignar el Token que generamos en la página de DropBox Apps. La próxima vez ya no pedirá información.
El uso es bastante simple, como indica Andrea Fabrizi en GITHUB:
Features
- Cross platform
- Support for the official Dropbox API v2
- No password required or stored
- Simple step-by-step configuration wizard
- Simple and chunked file upload
- File and recursive directory download
- File and recursive directory upload
- Shell wildcard expansion (only for upload)
- Delete/Move/Rename/Copy/List/Share files
- Create share link
- Monitor for changes
Para una lista de comandos completa les recomiendo ir a la página del script en GITHUB, pero creo que lo más importante es cómo subir archivos, así que les doy un ejemplo:
#Subiendo el archivo myfile.pdf en la carpeta FOLDER1
/home/dkesselm/dropbox_uploader_fori.sh -k upload myfile.pdf FOLDER1
#Creando la carpeta FOLDER1
/home/dkesselm/dropbox_uploader_fori.sh -k mkdir FOLDER1
El parámetro "-k" lo debí agregar para evitar un problema de autenticación desde mi equipo IBMi. Posiblemente a Uds no les ocurra y puedan evitar usarlo.
Espero que les haya sido de utilidad. Como siempre, pueden contactarme por mensaje o dejando un comentario.




