file2lftp

index | about | archive | charlas | docs | links

dot | git | img | plt | tty | uml

Publicar rápido!

Hace un par de días, la CI 1 de GitLab 2 se rompió mal y por ello mi blog 3 dejó de auto-regenerarse automáticamente luego de un git push.

Entonces ahora tengo 2 opciones, o me pongo a ver porqué se rompió la CI (parece ser que superé el límite de espacio en disco) o mitigo de alguna forma rápida sin mucho esfuerzo?

lftp es la posta!

Recordé que hace un par de años había escrito un script para realizar mirrors de sitios webs usando lftp 4, que es un cliente FTP pensado para usar desde scripts.

Me tomó un par de minutos adaptarlo y funciona muy rápido!

La idea es simple, estando en un directorio, quiero enviar un archivo a un sitio y no quiero tipear mucho mas que el comando y el nombre del archivo a enviar, simplemente tipear:


# file2lftp index.html

index.html => osiux.com:web/index.html
.
.
.
.
.

9154 bytes transferred

Listo! ya está donde debe, sin definir el server, ni el user ni la pass de conexión!

Dónde esta la magia?

Resulta que uso pass 5 (Password Store) y las credenciales ya las tenía definidas de ante-mano, es decir que en la ruta ftp/osiux.com/osirisosiux esta almacenada la contraseña de manera cifrada usando GPG.

Ahora bien, cómo sabe file2lftp 6 dónde buscar la contraseña?

Fácil, al iniciar el script obtiene el hostname del servidor remoto usando el hostname del equipo donde estoy, todos mis equipos son parte del dominio osiux.com sin importar en qué lugar físico estén situados, entonces solo hay que buscar algún directorio que se llame osiux.com dentro de ~/.password-store y eso hace el script.

Al encontrar el directorio, busca el primer archivo .gpg y se queda con el nombre del archivo sin la extension, en este caso osirisosiux

Luego verifica que el archivo especificado exista y genera la línea de comandos a ejecutar.

Obviamente se puede especificar mediante variables otra opciones:

variable default example
FTP_HOST hostname -d osiux.com
FTP_USER find -file -iname *.gpg osirisosiux
FTP_RDIR web web
FTP_LDIR $PWD ~/blog/

un alias para todo!

Aprovechando el uso de alias definí 4 nuevos comandos para agilizar la tareas y contar con casos específicos para otros directorios y/o sitios:

alias file2blg='FTP_HOST=osiux.com     FTP_USER=osirisosiux file2lftp'
alias file2img='FTP_HOST=osiux.com     FTP_USER=osirisosiux FTP_RDIR=web/img file2lftp'
alias file2tmb='FTP_HOST=osiux.com     FTP_USER=osirisosiux FTP_RDIR=web/tmb file2lftp'
alias file2pub='FTP_HOST=pub.osiux.com FTP_USER=osirispub   file2lftp'

file2img publicar en osiux.com/img


# file2img img/vim-autosave-backup.png
img/vim-autosave-backup.png => osiux.com:web/img/img/vim-autosave-backup.png
.
.
.
.
.

1792644 bytes transferidos en 6 segundos. (278.4 KiB/s)                                

file2tmb publicar en osiux.com/tmb/


# file2tmb tmb/vim-autosave-backup.png
tmb/vim-autosave-backup.png => osiux.com:web/tmb/tmb/vim-autosave-backup.png
.
.
.
.
.

306573 bytes transferidos en 1 segundo. (226.6 KiB/s)  

file2pub publicar en pub.osiux.com


# file2pub index.html 
index.html => pub.osiux.com:web/index.html
.
.
.
.
.

376 bytes transferred 

Tal vez te interese leer

ChangeLog

Notas al pie de página: