IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Commande FTP DownLoadAllFiles


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Par défaut Commande FTP DownLoadAllFiles
    Bonjour,

    J'essaye actuellement de récupérer tout le contenu (fichiers zip) d'un dossier distant via FTP.
    Pour le moment, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $destination = "D:\dossierLocal\fichier.zip
    $ftp = "ftp://user:pass@IPserveur/fichier.zip"
    $webclient = New-Object System.Net.Webclient
    $uri = New-Object System.Uri($ftp)
    
    $webclient.DownloadFile($uri, $destination)
    Cela fonctionne bien... pour 1 fichier ; mais si je veux récupérer tout le contenu du dossier FTP dans lequel j'arrive, en faisant quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $destination = "D:\dossierLocal\
    $ftp = "ftp://user:pass@IPserveur/*.zip"
    Ça ne fonctionne pas.

    Ne pouvant pas utiliser les propriétés comme Get-ChildItem, Test-Path... en FTP, impossible d'envisager un système de boucle foreach pour tout récupérer.

    Donc en gros, existe-t-il un autre méthode que DownloadFile, du genre DownloadAllFiles ou DownloadDir que je n'aurai pas trouvé et qui me permettrai de faire ça ?
    Sinon, y a-t-il une méthode simple ? Car je suis tombé sur des bouts de codes sur certains forum mais ce sont de vrais usines à gaz et ça me parait dingue de devoir en faire autant pour quelque chose qui devrait être simple

    Merci à vous

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    une piste.

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Par défaut
    Bonjour Laurent,

    Merci de ta réponse, en reprenant le code fourni j'ai réussi à télécharger les fichiers que je voulais via FTP.
    Par contre, j'aurai aimé supprimer les fichiers sur le serveur distant une fois le téléchargement effectué (comme si je déplaçais les fichiers en gros) ; malheureusement, sur le doc microsoft, il n'existe pas de "MoveFile" ou "DeleteFile" que je pourrais utiliser à la place de "DownloadFile".

    Auriez-vous une idée de la méthode à adopter pour faire cela ?

    N.B. : mon user a les droits en modification/suppression sur le serveur en question.

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Sur le même site ou sur Google une recherche autour de "PowerShell FTP Delete file" te donnera d'autre pistes ;-)

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Par défaut
    Bonjour,

    Merci Laurent pour tes indications, j'ai finalement réussi à faire tout ce que je voulais grâce à aux fonctions FTP que j'ai trouvé en fouillant dans ces liens.

    Seulement, je fais face à une problématique : comment modifier ces fonctions pour pouvoir écrire le code erreur retourner par la connexion FTP dans un fichier texte (en gros, je veux pouvoir logger ce qui se passe pendant la connexion et les transferts que j'effectue) ?

    Voici les fonctions que j'utilise :

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    function GetFilesListAsArray($user,$pass,$local_target,$ftp_uri,$subfolder)
    {
     # ftp address from where to download the files
     $ftp_urix = $ftp_uri + $subfolder
     $uri=[system.URI] $ftp_urix
     
    $ftp=[system.net.ftpwebrequest]::Create($uri)
     
    if($user)
     {
     $ftp.Credentials=New-Object System.Net.NetworkCredential($user,$pass)
     }
     #Get a list of files in the current directory.
     #Use ListDirectoryDetails instead if you need date, size and other additional file information.
     $ftp.Method=[system.net.WebRequestMethods+ftp]::ListDirectory
     $ftp.UsePassive=$true
     
    try
     {
     $response=$ftp.GetResponse()
     $strm=$response.GetResponseStream()
     $reader=New-Object System.IO.StreamReader($strm,'UTF-8')
     $list=$reader.ReadToEnd()
     $lines=$list.Split("`n")
     return $lines
     }
     catch{
     $_|fl * -Force
     }
    }
     
    function DownloadFile ($sourceuri,$targetpath,$username,$password){
     # Create a FTPWebRequest object to handle the connection to the ftp server
     $ftprequest = [System.Net.FtpWebRequest]::create($sourceuri)
     
    # set the request's network credentials for an authenticated connection
     $ftprequest.Credentials = New-Object System.Net.NetworkCredential($username,$password)
     
    $ftprequest.Method = [System.Net.WebRequestMethods+Ftp]::DownloadFile
     $ftprequest.UseBinary = $true
     $ftprequest.KeepAlive = $false
     
    # send the ftp request to the server
     $ftpresponse = $ftprequest.GetResponse()
     
    # get a download stream from the server response
     $responsestream = $ftpresponse.GetResponseStream()
     
    # create the target file on the local system and the download buffer
     try
     {
     $targetfile = New-Object IO.FileStream ($targetpath,[IO.FileMode]::Create)
     "File created: $targetpath"
     [byte[]]$readbuffer = New-Object byte[] 1024
     
    # loop through the download stream and send the data to the target file
     do{
     $readlength = $responsestream.Read($readbuffer,0,1024)
     $targetfile.Write($readbuffer,0,$readlength)
     }
     while ($readlength -ne 0)
     
    $targetfile.close()
     }
     catch
     {
     $_|fl * -Force
     }
     
    }

  6. #6
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Par défaut
    N'ayant toujours pas trouvé de pistes à ce sujet, je me permet de relancer

Discussions similaires

  1. [DOS] commande FTP
    Par claralavraie dans le forum Développement
    Réponses: 12
    Dernier message: 25/05/2011, 19h18
  2. Commande ftp pour récupérer un répertoire entier
    Par SuperCed dans le forum Développement
    Réponses: 3
    Dernier message: 09/01/2008, 09h06
  3. commande ftp par TClientSocket
    Par nemo69500 dans le forum C++Builder
    Réponses: 10
    Dernier message: 04/05/2006, 11h22
  4. commandes ftp
    Par spirit_epock dans le forum Modules
    Réponses: 2
    Dernier message: 22/03/2006, 14h17
  5. Commande FTP - tester retour des "put"
    Par pimousse_on_ice dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 01/03/2006, 15h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo