Powershell: Upload pliku przez FTP

19-sie-2019

Chociaz FTP nie jest bezpiecznym protokolem to czasami jeszcze gdzie niegdzie sie stosuje. Tym razem chodzilo o wyslanie plikow z serwera Windowsowego na serwer Linux. Idealnie jesli bedzie to zrobione przez PowerShella wlasnie.

Oto najwazniejszy kawalek kodu:

 

$localfile = 'c:/temp/filename.txt'
 $ftp = "ftp://servername/dir1/dir2/"
 $user = "username"
 $pass = "password"
 $destinationFileName = 'filename.txt'
 $webclient = New-Object System.Net.WebClient
 $webclient.Credentials = New-Object System.Net.NetworkCredential($user,$pass)
 $uri = New-Object System.Uri($ftp+$destinationFileName)
 $webclient.UploadFile($uri, $localfile)

Niestety w czasie ladownia pliku pojawial sie blad:

The remote server returned an error: (553) File name not allowed.

No jak to?

  • sciezka dostepu do pliku jest bezwzgledna, wiec nie ma watpliwosci gdzie plik ma sie utworzyc
  • a sama nazwa pliku nie zawiera zadnych nietypowych znakow.

Utworzenie pliku powinno sie udac! Przyczyna byla prozaiczna. Serwer FTP wymagal, zeby sciezka do pliku podawana po nazwie serwera byla poprzedzona jeszcze jednym znakiem /, o tak:

$ftp = "ftp://servername//dir1/dir2/"

Jeden dodatkowy slash i skrypt zadzialal!

 

 

Komentarze są wyłączone

Autor: Rafał Kraik