Thread [Net::FTP] Deep recursion on subroutine "Net::FTP::rmdir" at C:/strawberry/perl/lib/Net/FTP.pm line 681. (8 answers)
Opened by bianca at 2015-08-24 19:15

bianca
 2015-08-25 07:39
#181902 #181902
User since
2009-09-13
6977 Artikel
BenutzerIn

user image
@Raubtier: Berechtigungen sind vorhanden, siehe folgendes Beispiel
@GwenDragon: leider ändert das nichts, hab es jetzt auch mit cwd() versucht, siehe folgendes Beispiel:

Zum Nachstellen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl
use strict;
use warnings;

require Net::FTP; # <- Version 3.05
my $ftp = Net::FTP->new('ftp.servername.de',Debug => 1);
$ftp->login('***user***','***pw***');

$ftp->cwd('/tmp');
my $path = $ftp->mkdir('raubtier');
$ftp->cwd($path);
$ftp->put('test.pl');

$ftp->cwd('/tmp');
$ftp->rmdir("raubtier",1) or do { print "fail" };
$ftp->quit;

Quote
Net::FTP>>> Net::FTP(3.05)
Net::FTP>>> Exporter(5.70)
Net::FTP>>> Net::Cmd(3.05)
Net::FTP>>> IO::Socket::SSL(2.012)
Net::FTP>>> IO::Socket::IP(0.37)
Net::FTP>>> IO::Socket(1.36)
Net::FTP>>> IO::Handle(1.34)
Net::FTP=GLOB(0x2c308e8)<<< 220 FTP server ready
Net::FTP=GLOB(0x2c308e8)>>> USER ***user***
Net::FTP=GLOB(0x2c308e8)<<< 331 Password required for ***user***
Net::FTP=GLOB(0x2c308e8)>>> PASS ....
Net::FTP=GLOB(0x2c308e8)<<< 230 User ***user*** logged in
Net::FTP=GLOB(0x2c308e8)>>> CWD /tmp
Net::FTP=GLOB(0x2c308e8)<<< 250 CWD command successful
Net::FTP=GLOB(0x2c308e8)>>> MKD raubtier
Net::FTP=GLOB(0x2c308e8)<<< 257 "/tmp/raubtier" - Directory successfully created
Net::FTP=GLOB(0x2c308e8)>>> CWD raubtier
Net::FTP=GLOB(0x2c308e8)<<< 250 CWD command successful
Net::FTP=GLOB(0x2c308e8)>>> PASV
Net::FTP=GLOB(0x2c308e8)<<< 227 Entering Passive Mode (***nummern***,210,159).
Net::FTP=GLOB(0x2c308e8)>>> STOR test.pl
Net::FTP=GLOB(0x2c308e8)<<< 150 Opening ASCII mode data connection for test.pl
Net::FTP=GLOB(0x2c308e8)<<< 226 Transfer complete
Net::FTP=GLOB(0x2c308e8)>>> CWD /tmp
Net::FTP=GLOB(0x2c308e8)<<< 250 CWD command successful
Net::FTP=GLOB(0x2c308e8)>>> RMD raubtier
Net::FTP=GLOB(0x2c308e8)<<< 550 raubtier: Directory not empty
Net::FTP=GLOB(0x2c308e8)>>> PASV
Net::FTP=GLOB(0x2c308e8)<<< 227 Entering Passive Mode (***nummern***,71,82).
Net::FTP=GLOB(0x2c308e8)>>> NLST raubtier
Net::FTP=GLOB(0x2c308e8)<<< 150 Opening ASCII mode data connection for file list
Net::FTP=GLOB(0x2c308e8)<<< 226 Transfer complete
Net::FTP=GLOB(0x2c308e8)>>> DELE raubtier/.
Net::FTP=GLOB(0x2c308e8)<<< 550 raubtier/.: Is a directory
Net::FTP=GLOB(0x2c308e8)>>> RMD raubtier/.
Net::FTP=GLOB(0x2c308e8)<<< 550 raubtier/.: Directory not empty
Net::FTP=GLOB(0x2c308e8)>>> PASV
Net::FTP=GLOB(0x2c308e8)<<< 227 Entering Passive Mode (***nummern***,243,155).
Net::FTP=GLOB(0x2c308e8)>>> NLST raubtier/.
Net::FTP=GLOB(0x2c308e8)<<< 150 Opening ASCII mode data connection for file list
Net::FTP=GLOB(0x2c308e8)<<< 226 Transfer complete
Net::FTP=GLOB(0x2c308e8)>>> DELE raubtier/.
Net::FTP=GLOB(0x2c308e8)<<< 550 raubtier/.: Is a directory
Net::FTP=GLOB(0x2c308e8)>>> RMD raubtier/.
Net::FTP=GLOB(0x2c308e8)<<< 550 raubtier/.: Directory not empty
Net::FTP=GLOB(0x2c308e8)>>> PASV
Net::FTP=GLOB(0x2c308e8)<<< 227 Entering Passive Mode (***nummern***,63,113).
Net::FTP=GLOB(0x2c308e8)>>> NLST raubtier/.
Net::FTP=GLOB(0x2c308e8)<<< 150 Opening ASCII mode data connection for file list
Net::FTP=GLOB(0x2c308e8)<<< 226 Transfer complete
Net::FTP=GLOB(0x2c308e8)>>> DELE raubtier/.
Net::FTP=GLOB(0x2c308e8)<<< 550 raubtier/.: Is a directory
Net::FTP=GLOB(0x2c308e8)>>> RMD raubtier/.
Net::FTP=GLOB(0x2c308e8)<<< 550 raubtier/.: Directory not empty
Net::FTP=GLOB(0x2c308e8)>>> PASV
Net::FTP=GLOB(0x2c308e8)<<< 227 Entering Passive Mode (***nummern***,150,176).
Net::FTP=GLOB(0x2c308e8)>>> NLST raubtier/.
Net::FTP=GLOB(0x2c308e8)<<< 150 Opening ASCII mode data connection for file list
Net::FTP=GLOB(0x2c308e8)<<< 226 Transfer complete
.
.
.
...usw. und wenn sie nicht mit STRG C gestorben sind, so läuft das script noch heute...

Kann es sein, dass der FTP-Server einfach kein rmdir() auf nicht leere Verzeichnisse zulässt? Falls das so ist, sollte das Modul CPAN:Net::FTP das rekursive Löschen dann nicht "manuell" erledigen?

Ich hab das Script gegen zwei völlig unterschiedliche FTP-Server laufen lassen, das Bild ist dasselbe.
Bug oder Feature?
10 print "Hallo"
20 goto 10

View full thread [Net::FTP] Deep recursion on subroutine "Net::FTP::rmdir" at C:/strawberry/perl/lib/Net/FTP.pm line 681.