Schrift
[thread]4388[/thread]

Net::FTP::Common - Probleme bei GET / RETR: Modul verwendet RETR anstelle GET

Leser: 1


<< >> 7 Einträge, 1 Seite
1Hase
 2005-12-16 16:10
#36979 #36979
User since
2005-12-16
1 Artikel
BenutzerIn
[default_avatar]
Hallo, ich möchte ein kleines Programm schreiben, welches eine Datei von einem Solaris-Server per FTP abholt und dann weiterverarbeitet. Das Programm funktioniert vollständig, abgesehen vom FTP-Transfer. Hier der Code:

-- snip --
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!perl
use strict;
use Net::FTP::Common;

my $cfg = { Host => 'xxx.xxx.xxx.xxx',
User => 'xxxx',
Pass => 'xxxx',
RemoteDir => '/dir',
LocalDir => 'C:\Dir',
LocalFile => 'file.txt',
};
my $ftp = Net::FTP::Common->new($cfg, Debug => 1);
$ftp->get(File => 'file.txt');
$ftp->quit;

-- snap --

Durch "Debug=>1" habe ich gesehen, daß das Modul nicht das GET-Kommando absetzt, sondern RETR und dieses ist dem FTP-Server auf der Solaris-Büchse anscheinend unbekannt oder vielleicht gesperrt. Nachfolgend die Debug-Ausgabe:

-- snip --
Quote
Net::FTP::Common::VERSION = 5.2g at C:/tools/perl/site/lib/Net/FTP/Common.pm line 50.
Net::FTP>>> Net::FTP(2.72)
Net::FTP>>> Exporter(5.57)
Net::FTP>>> Net::Cmd(2.24)
Net::FTP>>> IO::Socket::INET(1.27)
Net::FTP>>> IO::Socket(1.28)
Net::FTP>>> IO::Handle(1.23)
Net::FTP=GLOB(0x1cbf06c)<<< 220 owdbfr03.owh.de FTP server ready.
Net::FTP=GLOB(0x1cbf06c)>>> user xxxx

Net::FTP=GLOB(0x1cbf06c)<<< 331 Password required for dwhp.
Net::FTP=GLOB(0x1cbf06c)>>> PASS ....
Net::FTP=GLOB(0x1cbf06c)<<< 230 User xxxx logged in.
Net::FTP=GLOB(0x1cbf06c)>>> CWD /dir

Net::FTP=GLOB(0x1cbf06c)<<< 250 CWD command successful.
Net::FTP=GLOB(0x1cbf06c)>>> TYPE I

Net::FTP=GLOB(0x1cbf06c)<<< 200 Type set to I.
Net::FTP=GLOB(0x1cbf06c)>>> PORT 172,22,20,1,7,188

Net::FTP=GLOB(0x1cbf06c)<<< 200 PORT command successful.
Net::FTP=GLOB(0x1cbf06c)>>> RETR

Net::FTP=GLOB(0x1cbf06c)<<< 500 'RETR ': command not understood.
download of to file.txt failed at C:/tools/perl/site/lib/Net/FTP/Common.pm line 372.
here are the settings in your Net::FTP::Common object: %s$VAR1 = bless( {
'Debug' => 1,
'Common' => {
'FTPSession' => bless( \*Symbol::GEN0, 'Net::FTP' ),
'RemoteDir' => '/dir',
'User' => 'xxxx',
'Pass' => 'xxxx',
'Type' => 'I',
'LocalFile' => 'file.txt',
'File' => 'file.txt',
'LocalDir' => 'C:\dir',
'Host' => 'xxx.xxx.xxx.xxx'
},
'Passive' => 1,
'Timeout' => 240
}, 'Net::FTP::Common' );
Net::FTP=GLOB(0x1cbf06c)>>> PWD

Net::FTP=GLOB(0x1cbf06c)<<< 257 "/dir" is current directory.
Net::FTP=GLOB(0x1cbf06c)>>> QUIT

Net::FTP=GLOB(0x1cbf06c)<<< 221-You have transferred 0 bytes in 0 files.
Net::FTP=GLOB(0x1cbf06c)<<< 221-Total traffic for this session was 409 bytes in 0 transfers.
Net::FTP=GLOB(0x1cbf06c)<<< 221-Thank you for using the FTP service on xxxx.
Net::FTP=GLOB(0x1cbf06c)<<< 221 Goodbye.

Process completed, Exit Code 0.

-- snap --

(Ich habe die geheimen Daten einfach mit "x"-Zeichen überschrieben.) Kann mir jemand einen Tip geben oder ein anders Modul nennen, welches vielleicht geeignet wäre? Es soll wohl auf Net::FTP geben, aber das finde ich auch activestate.com nicht.

Im Voraus vielen Dank,


Stefan\n\n

<!--EDIT|renee|1134986718-->
ptk
 2005-12-16 23:46
#36980 #36980
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Bist du dir *ganz* sicher, dass es GET als FTP-Kommando gibt? Ich finde beim oberflächlichen lesen nichts dergleichen im RFC.
renee
 2005-12-17 06:19
#36981 #36981
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@ptk: Deswegen wird das Client-uebliche "get" in ein "retr" uebersetzt...

@1Hase: Du kannst das Modul auch installieren, wenn es _nicht_ auf ActiveState zu finden ist:
http://wiki.perl-community.de/bin....inModul
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Dubu
 2005-12-17 16:16
#36982 #36982
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Das RETR wird ohne Parameter aufgerufen, daher wohl der Fehler.

Bei get() gibt es laut Doku zu Net::FTP::Common keinen Parameter File, sondern nur LocalFile und RemoteFile. Du meintest wahrscheinlich RemoteFile.
Gast Gast
 2005-12-19 09:53
#36983 #36983
Hallo,

vielen Dank für die vielen Hinweise. Ich habe am Wochenende nicht in den Thread geschaut, sondern es noch einmal zu Hause probiert und dabei festgestellt, daß Net::FTP bereits zum Standardlieferumfang der Perl-Distribution gehört. Mit Net::FTP funktioniert es, anbei Codeschnipsel für die Nachwelt, falls mal wieder jemand auf das Problem draufläuft:

-- snip --
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use Net::FTP;                           # Für FTP
my $server="servername.domain";
my $username="user";
my $password="pass";
my $pfad="/irgendwas";
my $dateilokal="C:\\daisses.txt";
my $datei="xyz.xml";

$ftp=Net::FTP->new($server, Debug=>0) || die "Keine Verbindung mit $server.\n";
$ftp->login($username, $password) || die "Fehler beim einloggen.\n";
$ftp->cwd($pfad);
$ftp->ascii();
$ftp->get($datei, $dateilokal) || die "Fehler beim herunterladen von $datei auf $server.\n";
$ftp->quit() || die "Fehler beim ausloggen von $server.\n\n";

-- snap --

Der Code ist natürlich noch ziemlich häßlich und unreif, zeigt aber, wie es funktioniert.

Betrifft "RETR" ohne Parameter: ich habe wirklich alle Parameter, welche das Modul anbietet, durchprobiert und im Debug-Modus wurde hier nie etwas angezeigt, das war mir auch schon aufgefallen, aber ich fand keinen Weg, das zu ändern.

Vielen lieben Dank an alle, welche sich über mein Problem den Kopf zerbrochen haben.

1Hase\n\n

<!--EDIT|renee|1134985957-->
renee
 2005-12-19 11:47
#36984 #36984
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das naechste Mal bitte [code]-Tags verwenden...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2005-12-19 11:56
#36985 #36985
sorry, werde mich dran halten.
<< >> 7 Einträge, 1 Seite



View all threads created 2005-12-16 16:10.