Aller au contenu

Script De Connexion Ssl Avec Lftp


Messages recommandés

Bonjour à tous,

Je souhaiterais me connceter à un ftp en ssl (ftpes) et récupérer mes fichiers en ligne de commande.

Cela permet de télécharger sur le NAS plutot que de laisser l'ordinateur allumé.

Comme il y a beaucoup de fichiers qui ne m'interessent pas sur le ftp, je ne peux pas faire de copie entière.

Mon idée est de placer dans un fichier executable toutes les informations de connexion, de sélection des répertoires pour ne pas avoir à les taper à chaque fois. Ainsi, je me connecte sur la console, lance l'executable qui me connecte et n'ai plus qu'à lister les fichier et lancer le get sur ce qui m'intéresse.

Voici les commandes dont j'ai besoin :

USBStation2>cd volumeUSB1/usbshare1-5/Mon dossier (pour placer le répertoire local dans lequel je veux télécharger)

USBStation2>lftp (lancement du client ftp)

lftp :~>set ftp:ssl-force true (connexion en ssl)

lftp :~>set ssl:verify-certificate no (pour éviter d'avoir l'erreur à cause du certificat)

lftp :~>connect monserveur:port

lftp monserveur :~>login monlogin

Password:

ftp monlogin@monserveur:~>

ensuite

ftp monlogin@monserveur:~>ls

ftp monlogin@monserveur:~>get lefichierquejeveux.extension

Si je lance toutes ces commandes les unes après les autres dans la console, cela fonctionne parfaitement.

J'aimerais créer un executable qui contient tout ça (jusqu'à la connexion).

J'ai donc créé un fichier download.sh dans lequel j'ai placé tout ça.

Mais le pb, c'est que cela ne fonctionne pas car il faut attendre que chacune des commandes soit terminée pour lancer la suivante ... et c'est là le problème car je ne sais pas comment faire.

Y a t-il une instruction qui permet de lancer les commandes séquentiellement ?

J'ai vu plusieurs pistes avec jobs, wait, ...

Merci pour vos conseils ...

Lien vers le commentaire
Partager sur d’autres sites

Si c'est le même fonctionnement qu'un FTP standard, il faut lui définir la liste des commandes à passer avec une balise de fin


lftp < EOF

set ftp:ssl-force true

set ssl:verify-certificate no

connect monserveur:port

login

pass

get fichier1

get fichier2

EOF

Modifié par bud77
Lien vers le commentaire
Partager sur d’autres sites

Dans mon fichier j'ai mis :

lftp < EOF

set ftp:ssl-force true

set ssl:verify-certificate no

connect monserveur:port

login monlogin

pass monpass

EOF

J'obtiens :

USBStation2> . download.sh

-sh: download.sh: line 1: can't open EOF: no such file

-sh: download.sh: line 4: connect: not found

login: must be suid to work properly

-sh: download.sh: line 6: pass: not found

-sh: download.sh: line 7: EOF: not found

USBStation2>

Lien vers le commentaire
Partager sur d’autres sites

J'ai essayé un autre truc qui fonctionne dans la console :

USBStation2> cd volumeUSB1/usbshare1-5

USBStation2> lftp

lftp :~> open monserveur:port ; user monuser monmotdepasse ; set ssl:verify-certificate no

lftp monuser@monserveur:~> ll

mais lorsque je place dans mon fichier :

lftp open monserveur:port ; user monuser monpass ; set ssl:verify-certificate no

USBStation2> . download.sh

lftp: open: Name or service not known

-sh: download.sh: line 1: user: not found

USBStation2>

Lien vers le commentaire
Partager sur d’autres sites

Le script de base :


ftp -i -n -u -v -d << EOF

		open SERVER.NAME

		user LOGIN PASS

		lcd REPERTOIRE_LOCAL

		cd REPERTOIRE_DISTANT

		get FICHIER.EXT

		bye

EOF

Dans ton cas, çà donnerais (après avoir étudié le man de lftp) :

lftp << EOF

set ftp:ssl-force true

set ssl:verify-certificate no

open SERVER -u USER,PASS -p PORT

lcd REPERTOIRE_LOCAL

cd REPERTOIRE_DISTANT

get FICHIER.EXT

EOF

J'ai mis en maj ce que tu dois mettre en fonction de tes besoins (à part le OEF)

Edit : de mémoire, il me semble qu'il faut aussi activer le mode interactif, pour qu'il gère tout seul la fin des commandes lancées

Modifié par bud77
Lien vers le commentaire
Partager sur d’autres sites

Bon, maintenant que le script fonctionne, passons aux problèmes suivants :-)

1/ Je vais devoir lancer ce script en me connectant sur la console.

Pour l'instant il est placé sur mon disque dur, bien profond dans l'arborescence.

De manière à ne pas devoir à aller le chercher dans le répertoire pour le lancer, existe t-il un moyen pour le lancer depuis la racine quand je me connecte ?

Par exemple, plutot que de devoir faire

USBSTATION>cd volumeUSB1/usbshare1-5

USBSTATION>. monscript.sh

Pouvoir faire directement

USBSTATION> .monscript.sh

J'ai essayé en vain plusieurs solutions :

- de créer (en admin ou en root) un répertoire à la racine,

- de placer mon script dans un des répertoires déjà existants

Le seul répertoire avec lequel ça a fonctionné est le tmp mais j'imagine qu'il sera purgé au prochain redémarrage du NAS ...

Quel est votre conseil pour éviter de se taper l'arborescence pour lancer le script (un raccourci, ...) ?

2/ J'ai des fichiers sur le ftp distant qui contiennent des caractères spéciaux, comment faire pour les récupérer ?

Par exemple :

get syst?me solaire.pdf (le è et l'espace posent problème)

get de.la.terre .?.la.lune.pdf (le à pose problème)

get de?couverte.pdf (le é pose problème)

get etude n? 36.pdf (le ° pose problème)

get terre & mer.pdf (le & pose problème)

En gros dès que j'ai un caractère spécial j'obtiens une erreur.

J'ai essayé en mettant un devant les espaces ou les caractères spéciaux mais ça ne fonctionne pas non plus.

Pareil avec un ' ou des ".

Ce sont de vraies questions de débutant mais il faut bien passer par là ;-)

Lien vers le commentaire
Partager sur d’autres sites

1) Tu peux le lancer en tapant le chemin complet du script (sans faire le cd) : "/volumeUSB1/usbshare1-5/monscript.sh"

2) Pour tes transferts, tu peux faire des "mget" au lieu de "get"

Le mget te permet le caractère d'échappement "*"

exemple : "mget *.pdf" récupérera tout les fichiers PDF du répertoire ; "mget etude*" récupérera tout les fichiers commençant par "etude"

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Pour ton problème n° 1, tu peux aussi :

1/ te connecter avec le compte que tu vas utiliser,

2/ éditer le fichier .profile,

3/ chercher la ligne commençant par "PATH=" et ajouter à la fin de cette ligne ":/volumeUSB1/usbshare1-5",

Après ça tu devrais pouvoir exécuter ton script de n'importe où en tapant monscript.sh

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.