PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Net::FTP - host aus array


z-shell
26.10.2008, 15:50
Hallo,
ich möchte Hostnamen/IPs aus einem Array auslesen und nacheiander mit Net::FTP eine Verbindung aufbauen, und sofort wieder schliessen, wenn kein anonymous login erlaubt ist.
In der Dokumentation von Net::FTP steht:
Host - FTP host to connect to. It may be a single scalar, as defined for the PeerAddr option in IO::Socket::INET, or a reference to an array with hosts to try in turn. The "host" method will return the value which was used to connect to the host.

Danach sieht mein Versuch so aus:
open (IPS,"<$ip_file");
my @ip=<IPS>;
my $ips=\@ip;

my $ftp=Net::FTP->new(
Host=>@$ips,
Port=>21,
Timeout=>30
) || die "Connection failed: $!";

Wenn ich mit tshark die Verbindung überwahe, stelle ich fest, dass eine Nameserveranfrage nach "Host" (wörtlich) gestellt wird. Es soll aber nacheinander auf die IPs connectet werden.

Wo liegt der Fehler?


z-shell
26.10.2008, 19:43
Ich habs:
open (IPS,"<$ip_file") || die "Cannot open IP-List\n";
my $i=0;

while (<IPS>){
$i++;
chomp;
my $host=$_;

my $ftp=Net::FTP->new($host, Debug=>0) || die "Connection failed: $!";

$ftp->login("$usr","$pass");
$ftp->quit;
}


Damit geht er schonmal di IPs nacheinander durch.

Jetzt muss ich nur noch wissen, wie ich den Response code vom Server auslesen kann.

z-shell
26.10.2008, 20:50
Jetzt muss ich nur noch wissen, wie ich den Response code vom Server auslesen kann.
Das geht auch ganz einfach:
my $response=$ftp->code();
if ($response == 230) {
print "$msg0\n";
}
elsif ($response == 530){
print "$msg1\n";
}

Danke für eure Hilfe ;)