{{tag>Réseau Shell SFTP FTP TLS}} # Notes client FTP lftp Voir aussi : * rclone * https://en.wikipedia.org/wiki/NcFTP * curl * ~/.netrc * /usr/kerberos/bin/ftp (paquet krb5-workstation) * far2l ## wget (download) ~~~bash wget --ftp-user=FTP_USERNAME --ftp-password='FTP_PASSWORD' ftp://URL/PATH_TO_FTP_DIRECTORY/* wget ftp://paul:123@serveur.org/fichier ~~~ ## curl Download / Télécharger ~~~bash curl -u utilisateur:motdepasse ftp://ftp.example.com/fichier.txt -O ~~~ Upload / Téléverser ~~~bash curl -T monfichier.txt -u utilisateur:motdepasse ftp://ftp.example.com/ ~~~ ## lftp ### Exemple de configuration lftp `~/.lftp/rc` ~~~ini # set ftp:ssl-force false set ssl:verify-certificate/ftp.truc.com no #set prompt "lftp \S\? \u\@\h:\w> " #set ftp:passive-mode off #set ftp:ssl-force/ftp.adobe.com off #set ftp:use-feat/ftp.adobe.com off set cache:enable no ~~~ ### Exemple utilisation Liste toutes les variables lftp ~~~bash set -a ~~~ Passage en mode binaire. Nécessaire ? ~~~bash # set type binary quote type i ~~~ ### Exemple 1 ~~~bash lftp ftp://user:Passw0rd@ftp1.acme.fr ~~~ NOTE : le mot de passe être défine dans `~/.netrc` ### Exemple 2 - Envois sosreport à RedHat ~~~bash lftp -v -c 'open -e "set ftps:initial-prot ""; \ set ftp:ssl-force true; \ set ftp:ssl-protect-data true; \ set ssl:verify-certificate true; \ set ftp:proxy http://192.168.56.1:3128 ; \ open anonymous:ftp@dropbox.redhat.com ; \ cd incoming ; \ put testfile' ~~~ ### Exemple 2 - mirroir - comme un rsync sur FTP NOTE : Il est aussi possible d'utiliser * la commande **wget** * **curlftpfs** avec **rsync** => à la place de curlftpfs il est préfèrable d'utiliser **rclone** ~~~ lftp user@example.com:/pub> mirror -v data /ftp_mirror lftp user@example.com:/pub> mirror -Rv /data/remote_copy . ~~~ Source : http://rajaseelan.com/2011/12/20/rsync-over-ftp/ ~~~bash lftp -c "set ftp:list-options -a; open ftp://user:password@your.ftp.com; lcd ./web; cd /web/public_html; mirror --reverse --delete --use-cache --verbose --allow-chown --allow-suid --no-umask --parallel=2 --exclude-glob .svn" ~~~ ~~~bash #!/bin/bash HOST="your.ftp.host.dom" USER="username" PASS="password" FTPURL="ftp://$USER:$PASS@$HOST" LCD="/path/of/your/local/dir" RCD="/path/of/your/remote/dir" #DELETE="--delete" lftp -c "set ftp:list-options -a; open '$FTPURL'; lcd $LCD; cd $RCD; mirror --reverse \ $DELETE \ --verbose \ --exclude-glob a-dir-to-exclude/ \ --exclude-glob a-file-to-exclude \ --exclude-glob a-file-group-to-exclude* \ --exclude-glob other-files-to-exclude" ~~~ Source : https://serverfault.com/questions/24622/how-to-use-rsync-over-ftp ## Pb ### Pb 1 http://www.unix.com/shell-programming-and-scripting/170285-how-connect-ftp-server-requires-ssl-authentication.html ~~~ lftp ftp://utilisateur:pass@ftp.serveur.org/Prod/Rapport lftp utilisateur@ftp.serveur.org:/Prod/Rapport> get Fichier.csv get: L'accès a échoué : 534 Policy requires SSL. (Fichier.csv) set ftp:ssl-protect-data true lftp ssmf@91.121.109.131:/Prod/Rapport> get LmkMonthlyExport-20150201.csv 2086953 octets transférés ~~~ `~/.lftp/rc` ~~~ set ftp:ssl-protect-data/ftp.serveur.org true ~~~ ### Pb 2 ~~~ lftp utilisateur@ftp.serveur.org:/Prod/Rapport> get Fichier.csv get: L'accès a échoué : 534 Protection level negotiation failed. (Fichier.csv) ~~~ Voir https://access.redhat.com/solutions/336113 Au tout début de la connexion ~~~ set ftp:ssl-force true set ftp:ssl-protect-data true ~~~ ## Autres rclone config ~~~ 1 / ProFTPd can't handle '*' in file names \ (Asterisk,Ctl,Dot,Slash) 2 / PureFTPd can't handle '[]' or '*' in file names \ (BackSlash,Ctl,Del,Dot,RightSpace,Slash,SquareBracket) 3 / VsFTPd can't handle file names starting with dot \ (Ctl,LeftPeriod,Slash) ~~~ Paquet RPM **lftp-scripts.noarch** : * /usr/share/lftp/convert-mozilla-cookies * /usr/share/lftp/import-ncftp * /usr/share/lftp/import-netscape * /usr/share/lftp/verify-file * /usr/share/lftp/xdg-move