πŸ’Ύ Archived View for gmi.osiux.com β€Ί 2023-06-13-file2lftp.gmi captured on 2023-07-10 at 13:12:09. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

`file2lftp`

<video id="video" controls width="720" height="406" autoplay loop background="#000000" preload>
  <source src="videos/file2lftp-1920x1080.mp4" type="video/mp4">
</video>

Publicar rΓ‘pido!

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?

`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[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[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/`     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

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

1: https://docs.gitlab.com/ee/ci/

2: https://docs.gitlab.com/omnibus/installation/

3: https://osiux.com/

4: https://github.com/lavv17/lftp

5: https://www.passwordstore.gmi/

6: https://gitlab.com/osiux/bin-bash-utils/-/raw/develop/file2lftp

7: 2023-06-06-wifi2qr.gmi

8: 2023-02-27-git-auto-commit-and-push-using-crontab.gmi

9: 2023-02-15-send-automatic-notifications-using-ntfy.gmi

10: 2021-04-05-align2col.gmi

11: 2021-03-17-historial-infinito-en-bash.gmi

12: 2014-04-28-semana-negra.gmi

13: https://gitlab.com/osiux/osiux.gitlab.io/-/commit/e28c7c0b18d5c81d2923aaa438b213b9e173038b

14: https://gitlab.com/osiux/osiux.gitlab.io/-/commit/12fb883403c8f0f7f318da73a713da498b831601

15: https://gitlab.com/osiux/osiux.gitlab.io/-/commit/51ec4fdfe7a5721756593c322cfb6d3380e14251

16: https://gitlab.com/osiux/osiux.gitlab.io/-/commit/757be0ca947351bff7dce144d3f94530df74ccac