Last Updated on 1 Maggio 2020 by Roberto De Pedrini
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
--- Roberto De Pedrini Faq400.com
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