Resolver subida de contenido por FTP de Pelican

Este sitio se realiza en Pelican, un generador de sitios estáticos, que genera un blog desde archivos en Markdown. No voy a entrar demasiado en detalles (luego, si eso, explicaré por qué uso esta forma de publicar contenido y dejé de lado Wordpress).

El problema (si acaso se le puede llamar así), es que Pelican, cuando recién le damos su kickstart, nos crea un makefile (si vienes de Unix/BSD o GNU/Linux estarás acostumbradx), y su sintaxis puede generar algunos problemas si utilizamos un símbolo de dólar (\$) en la contraseña. Supongo que pasará lo mismo con otros caracteres especiales.

Hoy, queriendo publicar usando FTP (porque el servidor no ofrece acceso SSH, y por lo mismo no puedo usar rsync), al terminar de generar el contenido, simplemente daba un error.

Así, en lugar de utilizar un makefile, lo que podemos hacer es utilizar un shell script (yo uso bash, pueden usar otros, según sus gustos y lo que tengan instalado en su equipo).

#!/bin/bash
HOST='sftp://tu.servidor.web'
REMOTE_DIR='/ruta/ftp/a/tu/sitio'
USER='usuario'
PASSWORD='Pas$w0rd'
LOCAL_DIR='/ruta/donde/pelican/saca/el/output'
BLOGDIR=/tu/ruta/de/trabajo

source TuVirtalenv/bin/activate
pelican $BLOGDIR/content -o $BLOGDIR/output -s $BLOGDIR/pelicanconf.py && \
lftp -u "$USER","$PASSWORD" $HOST -e "mirror -R -e --use-cache $LOCAL_DIR $REMOTE_DIR ; quit"
deactivate

Y el funcionamiento del script es muy simple. Simplemente definimos nuestro servidor, usuario, contraseña, directorios, y lo ejecutamos cuando queramos que genere —y suba— el sitio al servidor.

Queda a disposición del público para mejorarlo.

P.S. Sé que nunca es buena idea usar contraseñas en el shell, así como en los shell scripts. Sin embargo, para entornos privados (como es mi caso) puedes hacerlo con una relativa calma. Es decisión de cada usuario usarlo o no, según su entorno.


Escrito por DonFries en la categoría Tutoriales el Fri 20 April 2018. Etiquetas: errores, pelican, lftp, contraseña, script, bash,


©2006-2020, PimPomPapas.com - Desarrollado en México