Open Source – Lftp -Non solo ftp/sftp

L’apertura di IBM i al mondo Open Source permette di installare linguaggi e tools che semplificano i processi delle nostre applicazioni aziendali.

Ad esempio, un tipico caso è quello di SFTP che ha sostituito il vecchio FTP in diversi processi aziendali di scambio dati (spedizioni con i corrieri, borderò ecc).

Se dobbiamo scambiare files vis SFTP non sempre abbiamo la possibilità di rendere client e server “trusted” tramite uno scambio di chiavi RSA che garantiscono una comunicazione sicura senza doversi scambiare le password tutte le volte.

Se dobbiamo continuare ad utilizzare utente e password, la gestione di script batch non è così semplice come siamo abituati a fare con FTP e dobbiamo ricorrere a utility (sempre dal mondo open source) come Expect: ne abbiamo parlato sempre su questo blog qualche mese fa: SFTP con password (no SSH key authentication).

Una alternativa interessante, che apre l’IBM i oltre che a ftp e sftp anche ad altri protocolli come torrent, è “LFTP”

Lftp permette di creare degli script simili a quelli che utilizzavamo con FTP … con utente e password nello script stesso, perdendo qualcosa da un punto di vista sicurezza interna a vantaggio della semplicità, aprendo inoltre un mondo di nuove possibilità come SFTP, TORRENT, HTTP, controllo della banda di upload – download, ripresa dei download in caso di interruzione, funzionalità di mirror (in stile rsync) tra directory del client e quelle del server.

Insomma … piccolo, ma veramente potente, pacchetto open source: vediamo come installarlo e utilizzarlo in ambiente IBM i

Da ambiente QSH, o meglio, con un terminale SSH connesso all’ambiente PASE di IBM i:

bash-4.4$ yum install lftp

Seguiamo i passi di installazione e iniziamo a provarlo su un server SFTP pubblico e scarichiamo una intera directory del server in una nostra directory IFS.

Public SFTP Server: demo.wftpserver.com
Port: 2222
User: demo-user
Password: demo-user

Now create a new directory on our IFS
bash-4.4$ mkdir /home/faq400/wftp_download

Then we can download al the remote directory with this command with an integrated script:

bash-4.4$ lftp -c "set ssl:verify-certificate no; set sftp:auto-confirm yes; open  sftp://demo-user:demo-user@demo.wftpserver.com:2222; lcd /home/faq400/wftp_download; cd download; mget *;quit"

Nel caso sopra indicato effettuiamo un download di una intera directory. Se è una operazione periodica potrebbe aver senso ragionare in modo “incrementale” andando a scaricare solo i files modificati dall’ultimo download:

bash-4.4$ lftp -c "set ssl:verify-certificate no; set sftp:auto-confirm yes; open  sftp://demo-user:demo-user@demo.wftpserver.com:2222; mirror  --verbose --use-pget-n=8 -c /home/faq400/download /pdf/2020/testmirror/;quit"

Le opzioni di LFTP sono veramente tantissimi … ecco qualche esempio:

mget -c                             to continue interrupted download

set net:limit-rate 0:512000         to limit upload bandwidth
set net:limit-total-rate 3M:500K    to limit download and upload

lftp -e 'pget -c -n 5 /path/to/file' sftp://username@server    Multiparts transfer

LFTP, un pacchetto open source veramente interessante per la gestione del file transfer anche in ambiente IBM i

Related Posts
DB2 for i SQL – Stringhe – POSSTR-LOCATE-LOCATE_IN_STRING (IT)

Introduzione Spesso, nelle nostre applicazioni, abbiamo la necessità di lavorare con le stringhe di testo e l'SQL del DB2 può Read more

DB2 for i & SQL – FAQ & Howto (Part. 1) (IT)

Database DB2 e SQL ... forse lo strumento più potente e completo che abbiamo sulla piattaforma IBM i: ecco una Read more

Annuncio IBM i 7.4

Arriva direttamente con l'uovo di Pasqua questo annuncio IBM per le novità della versione IBM i 7.4, versione iNext secondo Read more

Generated Always Columns – Approfondimenti (IT)

Introduzione "Generated Always Column": sono colonne, campi, di una tabella il cui contenuto è controllato direttamente dal sistema ... e Read more

--- Roberto De Pedrini Faq400.com
Tags: ftpsftp

View Comments

  • Unica nota importante Roberto: per poter funzionare occorre aggiungere RSA key alla lista degli host conosciuti.
    Per risolvere basta provare a connettersi al server SFTP tramite il comando ssh o tramite una sessione QP2Term e digitare:

    ssh -p 2222 sftp://demo@demo.wftpserver.com

    Cliccare su yes, e scrivere la password.
    Questo passaggio è fondamentale ed occorre eseguirlo per ciascun nuovo server SFTP che si desidera aggiungere solo la prima volta naturalmente.

    Solo dopo, si possono lanciare i comandi riportati sopra con esito positivo.

    Grazie
    Giovanni

Recent Posts

VsCode Extension: Bob Cozzi’s RPG IV to RPG Free Conversion

L’estensione “RPG IV to Free Format Conversion” sviluppata da Bob Cozzi (Cozzi Research) è pensata per semplificare la conversione di…

11 mesi ago

IBM i & SQL Tips #010 – Localizzare programmi nella Call Stack con STACK_INFO

Ciao a tutti, oggi voglio segnalarvi un altro interessante contributo di Massimo Duca, parte della sua ormai nota serie IBM…

11 mesi ago

Display file DDS Edit per VsCode, nuova preview.

Incuriosito da alcuni messaggi di Cristian Larsen su Linkedin (New Release - Display File DDS Edit v.0.10.1) ho voluto scaricare…

11 mesi ago

Project Bob: il nuovo strumento AI di IBM per sviluppo COBOL su IBM Z e RPG su IBM i

Ciao a tutti,oggi voglio segnalarvi un annuncio che potrebbe segnare una svolta per lo sviluppo applicativo su ambienti IBM: Project…

11 mesi ago

IBM i & SQL Tips #6: chiamare API REST e analizzare le risposte JSON con SQL

Voglio segnalarvi un nuovo articolo molto interessante di Massimo Duca nella serie IBM i & SQL Tips. In questo sesto…

12 mesi ago

Come funziona il passaggio di parametri a un programma IBM i (RPG / Cobol)

Ciao a tutti, voglio segnalarvi un post molto utile di Marco Riva sul suo sito Markonetools, in cui spiega in…

12 mesi ago