Sito web di notizie tecnologiche e videogames.

Powershell: upload dei file su un server FTP

94

L’FTP è un protocollo utilizzato per il trasferimento di dati basato su un sistema client-server. In parole povere è un sistema di comunicazione che consente di caricare, spostare e scaricare file su un server. In questo articolo vedremo come caricare i contenuti di una cartella su un server FTP tramite Powershell.

Per fare questo dobbiamo avere configurato sul server un servizio FTP, nel mio caso sulla macchina Ubuntu che ospitava il servizio FTP ho usato il programma vsftpd, uno dei programmi più usati e sicuri per l’implementazione di questo servizio.

Oltre al servizio FTP bisogna aver configurato un utente ed avergli assegnato una directory del server, che sarà poi la cartella dove caricherà i file.

Nel mio caso dato che la macchina Ubuntu fungeva anche da web server ho creato un utente “remote” con home “/var/www/html/” (ovvero la web root del server) in modo che i file che caricava fossero visibili dall’esterno.

Ora vediamo lo script powershell che ci permette di caricare su una cartella del server tutti i file contenuti in una cartella locale …

Primo passo: definire le variabili di accesso

Per prima cosa definiamo una variabile che contenga il percorso della cartella di cui vogliamo caricare i file:

$Dir="C:\Work"

Definiamo le seguenti variabili per accedere al server ftp:

$ftp = "ftp://192.168.1.102/"
$user = "remote"
$pass = "remote"
$webclient = New-Object System.Net.WebClient
$webclient.Credentials = New-Object System.Net.NetworkCredential($user,$pass)

Secondo passo: caricare i file sul server

Una volta stabilita una connessione con il server FTP scorriamo tutti i file all’interno della cartella che abbiamo definito nel passo precedente ed uno per uno li carichiamo sul server:

foreach($item in (dir $Dir)){
    Write-Host "Uploading $item..."
    try{
        $uri = New-Object System.Uri($ftp+$item.Name)
        $webclient.UploadFile($uri, $item.FullName)}
    catch{
        $err=$_
        Write-Host $error.exception.message
    }
}

Esempio:

In questo esempio vediamo come vengono caricati i file contenuti nella cartella  “C:\Work\esempio” sulla cartella “/var/www/html” del server.

Questo è lo stato della cartella di destinazione del server prima dell’esecuzione dello script:

Powershell: upload dei file su un server FTP

Questo è il suo stato dopo l’esecuzione dello script:

Powershell: upload dei file su un server FTP

Come potete vedere sono presenti due nuovi file, ovvero quei file che erano presenti nella cartella sorgente (“C:\Work\esempio”) :

Powershell: upload dei file su un server FTP

Puntando l’indirizzo IP del server dal browser il risultato sarà il seguente:

Powershell: upload dei file su un server FTP

Cliccando su file1.txt, per esempio, se ne potrà vedere il contenuto:

Powershell: upload dei file su un server FTP

Se vuoi saperne di più … powershell ed i linguaggi di scripting

Commenti