Thread Probleme beim Überprüfen von Net::FTP (3 answers)
Opened by Gast at 2005-09-14 22:07

svenXY
 2005-09-15 14:32
#58010 #58010
User since
2005-09-15
33 Artikel
BenutzerIn
[default_avatar]
Hi,

ich bin mir nicht sicher, warum es bei Deinem Code nicht klappt, ich habe ihn aber mal etwas umgeschrieben. Bei mir funktioniert es so.

Ein paar Anregungen zu deinem Code:

Du weist oft Variablen so etwas zu:
Code: (dl )
1
2
my $var1;
$var1 = "$var_old";

das Quotinng macht den code langsam und ist unnötig. Ausserdem kann man beides auf eine Zeile reduzieren:
Code: (dl )
my $var1 = $var_old;


Es ist auch nicht notwendig, die FTPCODE Variable mitzuschleifen und dann mit if zu überprüfen. Es reicht hier, einfach zu testen, ob etwas geklappt hat und wenn nicht mit "next;" zum nächsten Schleifendurchlauf zu springen.

Weiterhin ist es besser, Parameter beim Funktionsaufruf explizit zu übergeben (arrays und hashes allerdings nur als Referenz)

Als Überlegung: Was soll passieren, wenn man erfolgreich in das Verzeichnis wechseln kann, aber keine Schreibrechte hat?

Code: (dl )
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
use strict;
use Net::FTP;

my $ftp_user = 'anonymous';
my $ftp_pwd = 'anonymous';

my @FOLDERS = ('folder1' , 'folder2');
my @IPLIST = ('xxx.xxx.xxx.xxx');
my $TESTFILE = 'testfile.txt';


my @open_ips = checkips(\@FOLDERS, \@IPLIST, $TESTFILE, $ftp_user, $ftp_pwd);
print join("\n", @open_ips);

sub checkips
{
my ($ref_FOLDERS, $ref_IPLIST, $TESTFILE, $user, $pwd) = @_;
my @OPENIPS;
foreach my $CURRENTIP (@{$ref_IPLIST}) {
print "Trying $CURRENTIP\n";
my $ftp = Net::FTP->new($CURRENTIP, Debug => 0) or ( print "Cannot connect to $CURRENTIP: $@" and next );
$ftp->login($user,"-$pwd\@") or ( print "Cannot login " , $ftp->message and next );
foreach my $CURRENTFOLDER (@{$ref_FOLDERS}) {
print "* Now scanning $CURRENTIP with folder $CURRENTFOLDER:\n";
$ftp->cwd("/$CURRENTFOLDER") or ( print "Cannot change working directory to $CURRENTFOLDER: ", $ftp->message and next );
#print "PWD: " . $ftp->pwd . "\n";
$ftp->put("$TESTFILE") || ( print "Cannot put $TESTFILE to $CURRENTFOLDER: ", $ftp->message and next);
push(@OPENIPS, "IP: $CURRENTIP with Folder: $CURRENTFOLDER");
print "\n\n";
}
$ftp->quit();
}
return @OPENIPS;
}


Gruss,
svenXY

View full thread Probleme beim Überprüfen von Net::FTP