1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#!/usr/bin/perl use warnings; use strict; use Net::FTP; print "Hello, FTPedWorld...\n"; my $ftp = Net::FTP->new("ftp.ul.to", Debug => 1) or die "Cannot connect to ftp.ul.to: $@"; $ftp->login("username",'geheim') or die "Cannot login ", $ftp->message; $ftp->cwd("/"); $ftp->binary; $ftp->pasv; my $ret = $ftp->command('PUT', ".\\irgendwas.jpg"); print "ret_val: ".$ret."\n";
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Net::FTP>>> Net::FTP(2.77)
Net::FTP>>> Exporter(5.64_01)
Net::FTP>>> Net::Cmd(2.29)
Net::FTP>>> IO::Socket::INET(1.31)
Net::FTP>>> IO::Socket(1.31)
Net::FTP>>> IO::Handle(1.28)
Net::FTP=GLOB(0xd24b2c)<<< 220 FTP-Uploadserver
Net::FTP=GLOB(0xd24b2c)>>> USER 379326
Net::FTP=GLOB(0xd24b2c)<<< 331 Password required for 379326.
Net::FTP=GLOB(0xd24b2c)>>> PASS ....
Net::FTP=GLOB(0xd24b2c)<<< 230 User logged in, proceed
Net::FTP=GLOB(0xd24b2c)>>> CWD /
Net::FTP=GLOB(0xd24b2c)<<< 250 Requested File Action Completed OK
Net::FTP=GLOB(0xd24b2c)>>> TYPE I
Net::FTP=GLOB(0xd24b2c)<<< 200 Type set to I.
Net::FTP=GLOB(0xd24b2c)>>> PASV
Net::FTP=GLOB(0xd24b2c)<<< 227 Entering Passive Mode (95,211,143,153,159,173).
Net::FTP=GLOB(0xd24b2c)>>> PUT .\2cstbrynnmiareno_1k.wmv.0002.jpg
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
35
36
37
38
39
40
41
42
Status: Auflösen der IP-Adresse für ftp.ul.to
Status: Verbinde mit 95.211.143.153:21...
Status: Verbindung hergestellt, warte auf Willkommensnachricht...
Antwort: 220 FTP-Uploadserver
Befehl: USER 379326
Antwort: 331 Password required for 379326.
Befehl: PASS *******
Antwort: 230 User logged in, proceed
Status: Verbunden
Status: Empfange Verzeichnisinhalt...
Befehl: PWD
Antwort: 257 "/"
Status: Anzeigen des Verzeichnisinhalts abgeschlossen
Status: Auflösen der IP-Adresse für ftp.ul.to
Status: Verbinde mit 95.211.143.153:21...
Status: Verbindung hergestellt, warte auf Willkommensnachricht...
Antwort: 220 FTP-Uploadserver
Befehl: USER 379326
Antwort: 331 Password required for 379326.
Befehl: PASS *******
Antwort: 230 User logged in, proceed
Status: Verbunden
Status: Starte Upload von Z:\uploaded.to.zaphire\pics\irgendwas.jpg
Befehl: CWD /
Antwort: 250 Requested File Action Completed OK
Befehl: TYPE I
Antwort: 200 Type set to I.
Befehl: PASV
Antwort: 227 Entering Passive Mode (95,211,143,153,143,84).
Befehl: STOR irgendwas.jpg
Antwort: 125 Data connection already open, starting transfer
Antwort: 226 Transfer Complete.
Status: Dateitransfer erfolgreich, 46.464 Bytes in 1 Sekunde übertragen
Status: Empfange Verzeichnisinhalt...
Befehl: PASV
Antwort: 227 Entering Passive Mode (95,211,143,153,166,113).
Befehl: LIST
Antwort: 125 Data connection already open, starting transfer
Antwort: 226 Transfer Complete.
Status: Anzeigen des Verzeichnisinhalts abgeschlossen
Status: Verbindung zum Server getrennt
Fehler: Verbindung vom Server geschlossen
1 2 3 4 5
if ($ftp->feature( 'PUT' )) { print "featured"; } else { print "not featured"; }
2011-10-28T07:31:45 GwenDragonFür das Hochladen gibt esCode: (dl )ftp->put($localfilename);
2011-10-28T07:43:41 GwenDragonPUT ist sinnlos.
PUT gibt es bei WebDAV.
put haben FTP-Programme als Programm-Befehl, nicht als FTP-Befehl.
QuoteBeispiele was du probiert hast, wo es nicht mit store o. ä. klappte, lieferst du ja unverständlicherweise nicht. Deswegen vermute ich das: Du probierst einfach ohne Wissen rum und willst wohl die Methoden des Perl-Moduls partout nicht korrekt nutzen.Hat jemand eine Ahung was ich da falsch mache
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 35
#!/usr/bin/perl use strict; use warnings; $|++; delete @ENV{qw(ENV BASH_ENV IFS PATH)}; # make safe! use Net::FTP; my $url = "ftp.*****.de"; print "Hello, FTPedWorld...\n"; my $ftp = Net::FTP->new($url, Debug => 1) or die "Cannot connect to $url: $@"; $ftp->login("1234567",'****************') or die "Cannot login ", $ftp->message; $ftp->cwd("/httpdocs"); $ftp->binary; $ftp->pasv; my $ret = $ftp->put(".\\test.txt"); print "PUT Not supported\n" if !$ftp->supported('PUT'); $ftp->delete("test.txt"); $ftp->quit; 1; __DATA__ __END__
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
Hello, FTPedWorld...
Net::FTP>>> Net::FTP(2.77)
Net::FTP>>> Exporter(5.65)
Net::FTP>>> Net::Cmd(2.29)
Net::FTP>>> IO::Socket::INET(1.31)
Net::FTP>>> IO::Socket(1.31)
Net::FTP>>> IO::Handle(1.28)
Net::FTP=GLOB(0x27ffa5c)<<< 220 FTP Server [213.*.*.*]
Net::FTP=GLOB(0x27ffa5c)>>> USER 1234567
Net::FTP=GLOB(0x27ffa5c)<<< 331 Password required for 1234567
Net::FTP=GLOB(0x27ffa5c)>>> PASS ....
Net::FTP=GLOB(0x27ffa5c)<<< 230 User 1234567 logged in
Net::FTP=GLOB(0x27ffa5c)>>> CWD /httpdocs
Net::FTP=GLOB(0x27ffa5c)<<< 250 CWD command successful
Net::FTP=GLOB(0x27ffa5c)>>> TYPE I
Net::FTP=GLOB(0x27ffa5c)<<< 200 Type set to I
Net::FTP=GLOB(0x27ffa5c)>>> PASV
Net::FTP=GLOB(0x27ffa5c)<<< 227 Entering Passive Mode (213,*,*,*,137,32).
Net::FTP=GLOB(0x27ffa5c)>>> ALLO 4
Net::FTP=GLOB(0x27ffa5c)<<< 202 No storage allocation necessary
Net::FTP=GLOB(0x27ffa5c)>>> PASV
Net::FTP=GLOB(0x27ffa5c)<<< 227 Entering Passive Mode (213,*,*,*,181,252).
Net::FTP=GLOB(0x27ffa5c)>>> STOR test.txt
Net::FTP=GLOB(0x27ffa5c)<<< 150 Opening BINARY mode data connection for test.txt
Net::FTP=GLOB(0x27ffa5c)<<< 226 Transfer complete
Net::FTP=GLOB(0x27ffa5c)>>> HELP PUT
Net::FTP=GLOB(0x27ffa5c)<<< 502 Unknown command 'PUT'
PUT Not supported
Net::FTP=GLOB(0x27ffa5c)>>> DELE test.txt
Net::FTP=GLOB(0x27ffa5c)<<< 250 DELE command successful
Net::FTP=GLOB(0x27ffa5c)>>> QUIT
Net::FTP=GLOB(0x27ffa5c)<<< 221 Goodbye.
1 2 3 4 5 6 7 8 9 10 11 12 13
#!/usr/bin/perl use warnings; use strict; use Net::FTP; print "Hello, FTPedWorld...\n"; my $ftp = Net::FTP->new("ftp.ul.to", Debug => 1) or die "Cannot connect to ftp.ul.to: $@"; $ftp->login("username",'geheim') or die "Cannot login ", $ftp->message; my $ret = $ftp->put('someavi.avi'); print "ret: ".$ret."\n";
QuoteDu sprichst in Rätseln. Was hat denn der FTP passive mode mit der Methode put des Moduls zu tun?Da hatte ich es wohl etwas zu gut gemeint, als ich pasv mode manuell setzen wollte. Ohne gehts ja nun.
2011-10-28T09:35:48 GwenDragonQuoteDu sprichst in Rätseln. Was hat denn der FTP passive mode mit der Methode put des Moduls zu tun?Da hatte ich es wohl etwas zu gut gemeint, als ich pasv mode manuell setzen wollte. Ohne gehts ja nun.
Es sollte auch auch mit dem korrekten Passive Mode setzen klappen.
Hast du dir mal die Methoden pasv* in Net::FTP genauer angesehen?
Was du getan hast, damit nichts klappt, wissen wir immer noch nicht.
Magst du niemand an solchen Fallen teilhaben lassen, weil es dir peinlich ist, oder sollen andere hier auch mal rumprobieren und dieselben Fehler machen wie du?
2011-10-28T12:03:13 IceRageÄhm. PUT und GET sind HTTP-Befehle, nicht FTP!Ich sage ganz ehrlich, dass ich null Ahnung vom FTP Protokoll habe. Aber elementare Kommandos wie PUT, GET sollten schon auf jedem FTP Server funktionieren ;) - würde ja sonst auch wenig Sinn ergeben.
QuoteAnm: fette Auszeichnung durch michRETR
Short for RETRieve, this command is used by the client to inform the server of the file the client would like to download. On many FTP client, this is implemented using the client-specfic "get" command.
(...)
STOR
Short for STORe, this command is used by the client to tell the the server that the client will be uploading data for a file to stored on the server using the filename given. On many FTP clients, this is implemented using the client-specific "put" command.
QuoteEs geht doch nix über ein Werkzeug, das man falsch einsetzen und interpretieren kann. ;)Ich habe mich bei der ganzen Sache überflüssiger Weise sehr stark an den Connection Log von FileZilla orientiert(...)
1 2 3 4 5 6 7 8 9 10 11 12 13
#!/usr/bin/perl use warnings; use strict; use Net::FTP; print "Hello, FTPedWorld...\n"; my $ftp = Net::FTP->new("ftp.ul.to", Debug => 1) or die "Cannot connect to ftp.ul.to: $@"; $ftp->login("username",'geheim') or die "Cannot login ", $ftp->message; my $ret = $ftp->put('someavi.avi'); print "ret: ".$ret."\n";
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Net::FTP>>> Net::FTP(2.77)
Net::FTP>>> Exporter(5.64_01)
Net::FTP>>> Net::Cmd(2.29)
Net::FTP>>> IO::Socket::INET(1.31)
Net::FTP>>> IO::Socket(1.31)
Net::FTP>>> IO::Handle(1.28)
Net::FTP=GLOB(0xd2449c)<<< 220 FTP-Uploadserver
Net::FTP=GLOB(0xd2449c)>>> USER 379326
Net::FTP=GLOB(0xd2449c)<<< 331 Password required for 379326.
Net::FTP=GLOB(0xd2449c)>>> PASS ....
Net::FTP=GLOB(0xd2449c)<<< 230 User logged in, proceed
Net::FTP=GLOB(0xd2449c)>>> ALLO 34984448
Net::FTP=GLOB(0xd2449c)<<< 502 Command 'ALLO' not implemented
Net::FTP=GLOB(0xd2449c)>>> PASV
Net::FTP=GLOB(0xd2449c)<<< 227 Entering Passive Mode (95,211,143,138,174,4).
Net::FTP=GLOB(0xd2449c)>>> STOR someavi.avi
Net::FTP=GLOB(0xd2449c)<<< 125 Data connection already open, starting transfer
Net::FTP=GLOB(0xd2449c)<<< 226 Transfer Complete.
2011-10-28T12:20:48 IceRageDanke für das Log.Warum der Upload aber nicht funktioniert, wenn man direkt/explizit den pasv mode setzen will, verstehe ich nicht. Wer weiß was die dort für einen verbogenen Server haben.
QuoteNee, das will auch niemand, am FTP rumzupflücken, um den Fehler rauszubekommen, wenn es auch anders geht.ch weiß, dass ist einigermaßen unbefriedigend, aber bevor ich jetzt noch Tage damit zubringe einen "Fehler" an einem Lauffähigen Skript zu finden, wende ich mich lieber anderen Aufgaben zu.