-- Leo's gemini proxy
-- Connecting to gmi.osiux.com:1965...
-- Connected
-- Sending request
-- Meta line: 20 text/gemini;lang=es_AR
AUTHOR: Osiris Alejandro Gomez
EMAIL: osiux@osiux.com
DATE: 2023-06-13 18:18
<video id="video" controls width="720" height="406" autoplay loop background="#000000" preload> <source src="videos/file2lftp-1920x1080.mp4" type="video/mp4"> </video>
Hace un par de días, la *CI* ^1[1] de *GitLab* ^2[2] se rompió mal y por ello mi *blog* ^3[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?
Recordé que hace un par de años había escrito un *script* para realizar *mirrors* de sitios *webs* usando `lftp` ^4[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!
Resulta que uso `pass` ^5[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[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/` │ └────────────┴───────────────────────────┴───────────────┘
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 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 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 index.html index.html => pub.osiux.com:web/index.html . . . . . 376 bytes transferred
`wifi2qr`[7]
git auto commit and push using crontab.gmi[8]
enviar notificaciones automáticas usando `ntfy.sh`[9]
alinear textos en columnas[10]
historial infinito en `bash`[11]
Semana Negra - Sobrevivir en la shell[12]
`2023-06-14 01:33`[13] actualizar imagen OpenGraph file2lftp
`2023-06-14 01:24`[14] reemplazar gif por mp4 en file2lftp
`2023-06-14 00:26`[15] agregar video file2lftp-640x360 en file2lftp
`2023-06-13 23:55`[16] agregar file2lftp
-- Response ended
-- Page fetched on Thu May 2 05:59:42 2024