PDA

Visualizza la versione completa : trasferimento ftp


michela_vin
21-06-2004, 20:40
Ciao a tutti sono nuova sia del forum sia del linguaggio perl

ho realizzato uno script in perl che trasferisce 3 file da un server all'altro
ho la necessità che l'ultimo file venga trasferito solo quando il primo file è stato completamente trasferito, la domanda forse per voi banale è questa:
è certo che il secondo ordine di trasferimento sia inviato solo dopo il termine del primo trasferimento? (e che il terzo sia fatto solo dopo il secondo?).
in caso contrario come faccio a controllarlo?

Grazie smack

Mich_
22-06-2004, 09:49
Sei sicura che sia un problema Perl?

ftp e` un programma del sistema operativo.

Se inserito in un programma Perl, dovresti postare il pezzetto di codice in cui e` inserito, altrimenti specificare meglio il problema.

michela_vin
22-06-2004, 19:00
Ciao
mi spiego meglio

nello script perl ho questa serie di istruzioni

use Net::FTP;

$ftp = Net::FTP->new("ftp.mioprimosito.it", Passive => 0);
$ftp->login($uiserid,$pwsword);
$ftp->cwd("/miadirectory");
$ftp->put("$miopath/file");
$res1=$ftp->pwd();
$ftp->quit;

$ftp = Net::FTP->new("ftp.mioprimosito.it", Passive => 0);
$ftp->login($uiserid,$pwsword);
$ftp->cwd("/miadirectory1");
$ftp->put("$miopath/file1");
$res2=$ftp->pwd();
$ftp->quit;

$ftp = Net::FTP->new("ftp.mioprimosito.it", Passive => 0);
$ftp->login($uiserid,$pwsword);
$ftp->cwd("/miadirectory2");
$ftp->put("$miopath/file2");
$res3=$ftp->pwd();
$ftp->quit;

devo essere sucura che il
file1 inizi il trasferimento solo dopo che
file sia stato già trasferito

e che il trasferimento del file2 abbia inizio solo dopo che file1
sia stato già trasferito

le istruzioni così scritte mi garantiscono questa cosa? o potrebbe accadere che uno dei file successivi inizi il trasferimento prima del completamento del file precedente?

grazie :)

shishii
22-06-2004, 20:13
Ciao,

nel tuo caso i trasferimenti iniziano e finiscono uno dopo l'altro nell'ordine che hai dato, quindi ok, l'unica cosa che potrebbe succedere e che un trasferimento non vada a buon fine, e non mi pare che hai inserito qualche controllo di errore.

michela_vin
22-06-2004, 20:25
Grazie per la risposta celere
potresti dirmi come fare per controllare se dovesse verificarsi un errore?

Grazie ancora

LordSaga640
23-06-2004, 19:45
Originariamente inviato da michela_vin
Ciao
mi spiego meglio

nello script perl ho questa serie di istruzioni

use Net::FTP;

$ftp = Net::FTP->new("ftp.mioprimosito.it", Passive => 0);
$ftp->login($uiserid,$pwsword);
$ftp->cwd("/miadirectory");
$ftp->put("$miopath/file");
$res1=$ftp->pwd();
$ftp->quit;

$ftp = Net::FTP->new("ftp.mioprimosito.it", Passive => 0);
$ftp->login($uiserid,$pwsword);
$ftp->cwd("/miadirectory1");
$ftp->put("$miopath/file1");
$res2=$ftp->pwd();
$ftp->quit;

$ftp = Net::FTP->new("ftp.mioprimosito.it", Passive => 0);
$ftp->login($uiserid,$pwsword);
$ftp->cwd("/miadirectory2");
$ftp->put("$miopath/file2");
$res3=$ftp->pwd();
$ftp->quit;

devo essere sucura che il
file1 inizi il trasferimento solo dopo che
file sia stato già trasferito

e che il trasferimento del file2 abbia inizio solo dopo che file1
sia stato già trasferito

le istruzioni così scritte mi garantiscono questa cosa? o potrebbe accadere che uno dei file successivi inizi il trasferimento prima del completamento del file precedente?

grazie :)

Il tuo codice è un po' incasinato :D
Se ti devi connettere allo stesso spazio web non cè bisogno che che ti connetti e sconnetti 3 volte :o



use Net::FTP;
$errore=0;
$ftp = Net::FTP->new("ftp.mioprimosito.it", Passive => 0);
$ftp->login($uiserid,$pwsword);
$ftp->cwd("/miadirectory");
$ftp->put("$miopath/file") or $error=1;
print "Il primo file non è stato caricato\n" if ($errore==1);
$errore=0;

$ftp->cwd("/miadirectory1");
$ftp->put("$miopath/file1") or $error=1;
print "Il secondo file non è stato caricato\n" if ($errore==1);
$errore=0;

$ftp->cwd("/miadirectory2");
$ftp->put("$miopath/file2") or $error=1;
print "Il terzo file non è stato caricato\n" if ($errore==1);
$errore=0;
$res1=$ftp->pwd();
$ftp->quit;


Le sitruzioni delle condizioni poi le farai più complesse.
Secondo gli standard perl se una funzione riesce, ritorna un valore differente da zero, altrimenti ritorna UNDEF o zero.
Quindi se il metodo put di FTP ritorna zero, verrà verificata la seconda parte e verrà assegnato ad $error il valore 1.
The power of perl :metallica

michela_vin
27-06-2004, 19:38
Si non è altro che un copia incolla della stessa istruzione.
Ma sai quando non sei padrona della materia non ti metti certo a preoccuparti di queste cose.
Fino a qualche mese fa pensavo che perl fosse una parolaccia
quindi già il fatto che lo script funzionasse è stato un bel traguardo.
ora grazie a te è anche ottimizzato che voglio di più? :)

Grazie

Loading