Page 1 sur 3
[R] Récupération de fichier par SFTP
Posté : mar. 05 avr. 2011 20:18
par koa0
Bonjour à tous,
Je recherche un script qui me permet de me connecter par SFTP à un serveur UNIX et d'y recuperer un fichier afin de le ramener dans mon windows.
Merci par avance
Karim
Re: [..] Récupération de fichier par SFTP
Posté : mar. 05 avr. 2011 20:25
par Tlem
Re: [..] Récupération de fichier par SFTP
Posté : mer. 06 avr. 2011 09:58
par koa0
Bonjour,
J'ai consulté les liens mentionnés mais je n'y ai pas compris grand chose. Le SFTP n'est pas pris en charge par autoit? J'ai un script :
► Afficher le texte
Code : Tout sélectionner
#include <Constants.au3>
#include <array.au3>
;$title_arg="to_send_ssh.txt"
$title_arg="test.txt"
if FileExists($title_arg) Then FileDelete($title_arg)
FileWriteLine($title_arg,"logout") ; all case for unix
FileWriteLine($title_arg,"exit") ; some case Win32
;init des messages de retours
$mess_err_pb_connexion_machine="Unable to open connection:" ; message typique de plink lorsqu'une machine n'est pas joignable
$pb_access_login="Access denied" ; erreur générique, peut être à complèter avec d'autres messages dépendant des serveur
; et en faire un tableau de message d'erreur dédié au login à parcourir
$pb_mdp="Wrong passphrase" ; pb mot de passe , même remarque que précédément
;section des init des paramètres
;il faudra initialiser ces variables par lecture de fichier ini est faire une boucle
$password="xxxxxxxx"
$login="xxxxxxxxxxx"
$machine='xxx.xxx.xxx.xxx'
$port=22
$flux_out=Run(@ComSpec&' /c plink -pw '&$password&' '&$login&'@'&$machine&' < '&$title_arg,@WorkingDir,@SW_HIDE,$STDERR_CHILD + $STDOUT_CHILD)
;$flux_out=Run(@ComSpec&' /c ssh -R '$machine& ':'&$port&$password&' '&$login&'@'&$machine&' < '&$title_arg,@WorkingDir,@SW_HIDE,$STDERR_CHILD + $STDOUT_CHILD)
$rep_err=""
$rep_ok=""
While 1
$rep_err &= StderrRead($flux_out)
If @error Then ExitLoop
$rep_ok &= StdoutRead($flux_out)
If @error Then ExitLoop
Wend
If StringInStr($rep_err,$pb_mdp)<>0 Then
MsgBox(0,"Pb connection","Mot de passe erronné pour login "&$login&" sur machine "&$machine)
Else
If StringInStr($rep_err,$mess_err_pb_connexion_machine)<>0 Then
MsgBox(0,"Pb connection","Impossible de joindre "&$machine)
Else
If StringInStr($rep_err,$pb_access_login)<>0 Then
MsgBox(0,"Pb connection",$pb_access_login&" n'est pas authorisé à se connecter sur "&$machine)
Else
MsgBox(0,"connection OK","Connection établie sur "&$machine&' pour le compte '&$login)
EndIf
EndIf
EndIf
MsgBox(0, "STDOUT read:", $rep_ok)
MsgBox(0, "STDERR read:", $rep_err)
Exit 0
A priori j'arrive à me connecter sur le serveur mais j'aimerais aussi récuperer un fichier dessus mais je ne sais pas comment m'y prendre.
Quelqu'un a une idée?
Merci
Re: [..] Récupération de fichier par SFTP
Posté : mer. 06 avr. 2011 10:27
par sylvanie
Bonjour,
Non, autoit ne prends pas en charge le SFTP.
Votre script fait un appel à un sous composant de putty.
Si il s'agit bien d'un serveur SFTP, et non scp (je lève cette hypothèse au cas où), normalement un "get nom_fichier" suffit après la connexion.
Les commandes sont passées dans votre exple par le fichier test.txt, il doit y avoir les infos nécessaires. Que contient il actuellement ?
Re: [..] Récupération de fichier par SFTP
Posté : mer. 06 avr. 2011 10:31
par koa0
Merci d'avoir repondu.
Pour le moment le fichier text ne contient rien. Quelles commandes dois je y mettre? Puis je avoir un exemple?
Re: [..] Récupération de fichier par SFTP
Posté : mer. 06 avr. 2011 10:38
par sylvanie
Et bien je lancerai plink manuellement (hors script Autoit pour valider la manipulation) et je ferai, une fois connecté :
pwd ;
get nom_du_fichier_cible; (avec chemin d'accès si différent du pwd retourné)
quit
si il s'agit d'une connexion ssh, n'assurant que scp,il faudra plutôt utiliser un client scp, genre pscp.exe (toujours de chez putty)
Re: [..] Récupération de fichier par SFTP
Posté : mer. 06 avr. 2011 10:45
par koa0
Je vais paraitre lourd et imbécile mais n'est il pas possible d'avoir un exemple commenté de ce que tu ferais de façon que je ne revienne pas chaque fois te poser des questions qui ne font pas avancer les choses. Je suis novice dans la programmation réseau.
Merci
Re: [..] Récupération de fichier par SFTP
Posté : mer. 06 avr. 2011 11:15
par sylvanie
Et bien avant de se lancer dans un code autoit, il faut s'assurer qu'on a bien un SFTP en face
Dans une fenêtre DOS :
Code : Tout sélectionner
Chemin_a_plink\plink -pw password user@adresse_serveur
pwd
get nom_du_fichier_cible_a_telecharger
quit
si tout se passe bien alors, on passe à la partie Autoit (ie simplement mettre la commande get nom_du_fichier_cible_a_telecharger et quit dans le fichier test.txt), sinon, il faut récupérer les erreurs renvoyées pour diagnostiquer.
Si ça ne marche pas, parce qu’il s'agit d'un scp, téléchargez pscp et toujours depuis une fenêtre DOS, faites un :
Code : Tout sélectionner
pscp -pw password user@adresse_serveur:/chemin_du_fichier_a_telecharger/nom_fichier ./nom_fichier
En cas de succès, il faut lancer cette commande au lieu de l'appel à plink
Bon diagnostique
Re: [..] Récupération de fichier par SFTP
Posté : mer. 06 avr. 2011 13:27
par koa0
Merci.
Je vais dans un premier temps rechercher ce fameux plink car mon putty est un executable sans install.
Je test et je te tiens au courant.
Re: [..] Récupération de fichier par SFTP
Posté : jeu. 07 avr. 2011 08:34
par koa0
Bonjour,
Je viens de tester la commande envoyée:
Chemin_a_plink\plink -pw password user@adresse_serveur
Elle me connecte bien au serveur. par contre je n'arrive pas à récupérer un fichier par get car non reconnu.
Pour info j'ai un système AIX 5.3.
Merci par avance
Re: [..] Récupération de fichier par SFTP
Posté : jeu. 07 avr. 2011 08:49
par koa0
A priori je peux passer par une commande sftp mais je ne sais pas la créer.
Re: [..] Récupération de fichier par SFTP
Posté : jeu. 07 avr. 2011 09:50
par sylvanie
Bonjour,
Get non supporté par SFTP

étrange ?
Une fois connecté en SFTP, que renvoie alors la commande help ?
Re: [..] Récupération de fichier par SFTP
Posté : jeu. 07 avr. 2011 10:02
par sylvanie
Attention, je viens d'essayer de me connecter via plink sur un de mes serveur ssh n'ayant pas de serveur SFTP, et on se connecte bien, mais je n'ai pas de session SFTP par la suite, il s'agit bien d'une connexion ssh classique dans mon cas.
Je me demande même si plink permet réellement de faire du SFTP ?
Avez vous essayé avec un lient windows SFTP genre winscp en décochant l'option "Allow SCP fallback" pour justement voir si on n'a pas un soucis de ce type ?
Re: [..] Récupération de fichier par SFTP
Posté : jeu. 07 avr. 2011 13:06
par koa0
Désolé mais comme je suis entre réunion j'ai du mal à répondre rapidement. Veuillez m'en excuser par avance.
J'ai peut être fait un mauvais appel.
A priori la connexion par le dos se fait. Je fais un plink -pw XXXXX
XXXXX@xxx.xxx.xxx.xxx et j’atterris dans la fenêtre propre à mon serveur AIX. Maintenant je fais un get et le serveur me répond que
ksh: get: not found.
Dois je utiliser une autre commande?
Re: [..] Récupération de fichier par SFTP
Posté : jeu. 07 avr. 2011 13:29
par sylvanie
Et bien je pense que c'est une connexion ssh brute de fonderie et pas sftp
A partir d'une commande DOS, essaie la syntaxe avec
pscp -pw password user@adresse_serveur:/chemin_du_fichier_a_telecharger/nom_fichier ./nom_fichier
download le avant si tu ne l'as pas.
http://the.earth.li/~sgtatham/putty/latest/x86/pscp.exe
Sinon en plus conviviale si tu n'as besoins que de transférer des fichiers :
http://winscp.net/download/winscp432.zip
Il est portable, donc pas besoins de droits admin, ça fait un double explorateur : à gauche ton arbo windows, à droite celle du serveur. En plus il gère FTP; SFTP et SCP
Re: [..] Récupération de fichier par SFTP
Posté : jeu. 07 avr. 2011 13:38
par koa0
En lancant la commane mentionnée il me marque access denied
Re: [..] Récupération de fichier par SFTP
Posté : jeu. 07 avr. 2011 13:42
par sylvanie
Ok, donc le compte utilisé pour le scp n'est pas authorisé (voir peut être scp intedit)
Donc on laisse pscp en attente
Côté Winscp ça donne quoi ?
Re: [..] Récupération de fichier par SFTP
Posté : jeu. 07 avr. 2011 13:53
par koa0
Vraiment désolé
Je viens de m’apercevoir que je tapais sur une mauvaise ip donc le pscp fonctionne.
je veux recuperer le fichier toto.sql donc je tape la commande:
pscp -pw XXXXX
YYYYYY@XXX.XXX.XXX.XXX::/tmp/toto.sql ./toto.txt et ça marche pas.
Il me mets
./sqlnet.log[3]: DBSNMP: not found.
./sqlnet.log[4]: Fatal: not found.
./sqlnet.log[5]: 0403-057 Syntax error at line 5 : `(' is not expected.
Peut on m'expliquer?
Merci
Re: [..] Récupération de fichier par SFTP
Posté : jeu. 07 avr. 2011 14:01
par sylvanie
pour les :: dans
pscp -pw XXXXX
YYYYYY@XXX.XXX.XXX.XXX::/tmp/toto.sql ./toto.txt
c'est une faute de frappe ? car il n'en faut qu'un
Visiblement on dirait une interprétation du fichier ??
essai de le sauvegarger sans extension des fois qu'on aurait un windows "trop" intelligent
Re: [..] Récupération de fichier par SFTP
Posté : ven. 08 avr. 2011 08:27
par koa0
Bonjour,
Peux tu m'expliquer la commande stp. Je suis sur du windows et je veux récupérer un fichier sur un AIX. pscp -pw XXXXX
YYYYYY@XXX.XXX.XXX.XXX:/tmp/toto.sql ./toto.txt.
A priori de ce que je retiens /tmp/toto.sql est le fichier que je dois récupérer je veux le mettre par exemple dans d:\temp. Comment puis je mettre cette destination dans la commande que tu m'as donné?
Merci