gegewawa Posté(e) le 12 avril 2012 Partager Posté(e) le 12 avril 2012 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 ... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 12 avril 2012 Partager Posté(e) le 12 avril 2012 (modifié) 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é le 12 avril 2012 par bud77 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gegewawa Posté(e) le 12 avril 2012 Auteur Partager Posté(e) le 12 avril 2012 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> 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 12 avril 2012 Partager Posté(e) le 12 avril 2012 Humm, laisse moi regarder dans les scripts que j'avais fait pour une ancienne mission 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gegewawa Posté(e) le 12 avril 2012 Auteur Partager Posté(e) le 12 avril 2012 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> 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 12 avril 2012 Partager Posté(e) le 12 avril 2012 (modifié) 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é le 12 avril 2012 par bud77 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gegewawa Posté(e) le 12 avril 2012 Auteur Partager Posté(e) le 12 avril 2012 (modifié) Ok, j'essaie. Mais ou active t-on le mode interactif ? Edit : j'obtiens : Unknown command `EOF'. Modifié le 12 avril 2012 par gegewawa 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 12 avril 2012 Partager Posté(e) le 12 avril 2012 C'est une option a rajouter au lftp, si tu regardes le code du FTP normal, y'a un "-i" qui s'en occupe, pour lftp, je sais pas trop Essaye déjà sans 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gegewawa Posté(e) le 12 avril 2012 Auteur Partager Posté(e) le 12 avril 2012 j'obtiens : Unknown command `EOF'. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gegewawa Posté(e) le 13 avril 2012 Auteur Partager Posté(e) le 13 avril 2012 ça fonctionne avec : #! /bin/sh servFTP=monserveur:port userFTP=monuser passFTP=monpass cd mondossier && lftp -u $userFTP,$passFTP -e 'set ssl:verify-certificate no' $servFTP 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 13 avril 2012 Partager Posté(e) le 13 avril 2012 Oui, tu passes toutes les commandes l'une après que l'autre se soit terminé Je viens de trouver çà aussi http://www.developpez.net/forums/d118721/systemes/linux/applications/faire-script-file-lftp/ 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gegewawa Posté(e) le 13 avril 2012 Auteur Partager Posté(e) le 13 avril 2012 Oui, mais j'avais essayé et ça ne fonctionnait pas. Tout comme le && entre chaque commande. Le principal c'est que j'y sois arrivé. Merci en tout cas pour ton aide. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gegewawa Posté(e) le 14 avril 2012 Auteur Partager Posté(e) le 14 avril 2012 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à ;-) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 14 avril 2012 Partager Posté(e) le 14 avril 2012 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" 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gegewawa Posté(e) le 14 avril 2012 Auteur Partager Posté(e) le 14 avril 2012 cool merci pour ces tuyaux ... En plus ça aide bien comme je lance aussi à 50% du temps les téléchargements depuis une tablette android ... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
doumdoum Posté(e) le 14 avril 2012 Partager Posté(e) le 14 avril 2012 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 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gegewawa Posté(e) le 15 avril 2012 Auteur Partager Posté(e) le 15 avril 2012 Je vais me mettre à vi, alors ... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 15 avril 2012 Partager Posté(e) le 15 avril 2012 Je tiens à préciser que l'édition du PATH peux résulter un syno KO si mal utilisé ... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gegewawa Posté(e) le 15 avril 2012 Auteur Partager Posté(e) le 15 avril 2012 oui c'est pour cela que je vais laisser faire quelqu'un qui connait. Trop dangereux pour un bitos ... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
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.