Hi,
kleines Problem hier mit einem Perl FTP Client. Also, ich versuche mich mit einem Perlscript an einem FTP-Server anzumelden, was aber daran scheitert das verschiedene FTP-Server unterschiedlich viele 220 Informationen liefern. Bei Server a klappt es z.B. wenn ich 3 220 Infos abwarte und dann den Usernamen sende, aber wenn ich das bei einem FTP-Server versuche der nur ein mal 220 sendet bleibt das Script dabei hängen :(
Gibt es eine Möglichkeit abzufragen wie oft der Server 220 sendet und wann er dann bereit ist den Usernamen zu empfangen?
Danke.
Ich habe es so versucht (klappt wie gesagt nur wenn genau so viele $antwort abgefragt werden wie 220‚er kommen...):
$ftpsocket = IO::Socket::INET->new
(
PeerAddr => $Host,
PeerPort => 21,
Proto => "tcp",
Type => SOCK_STREAM
)
die "Socketverbindung fehlgeschlagen $remote_host:$remote_port $!\n";
Getting FTP Banner
$antwort = <$ftpsocket>;
print "Version = $antwort";
print LOG "Version = $antwort";
Hier liegt das Problem...
$antwort = <$ftpsocket>;
if ($antwort=~ /220/)
{
print "Version = $antwort";
print LOG "Version = $antwort";
}
$antwort = <$ftpsocket>;
if ($antwort=~ /220/)
{
print "Version = $antwort";
print LOG "Version = $antwort";
}
Try anonymous connection
print "Trying anonymous connection...\n";
print LOG "Trying anonymous connection...\n";
print $ftpsocket "user anonymous\015\012";
$antwort = <$ftpsocket>;
print "$antwort\n";
print LOG "$antwort\n";
if ($antwort=~ /530/)
{
print "Anonymous access ist restricted on this host\n";
print LOG "Anonymous access ist restricted on this host\n";
}
elsif ($antwort=~ /331/)
{
print "Sending email as password...\n";
print LOG "Sending email as password...\n";
print $ftpsocket "pass guest@unknown\015\012";
$antwort = <$ftpsocket>;
print $antwort;
print LOG $antwort;
print $ftpsocket "close\015\012";
print $ftpsocket "quit\015\012";
}
close($ftpsocket);
}