Guten Abend,
ich versuche gerade auf einer Sps die per Codesys3,5 programmiert wird
einen FTP Client zum laufen zu bringen.
Ich möchte dem FTP Server eine csv Datei Senden. Wenn ich mit Curl an
den Server eine Datei senden möchte dann funktioniert es.
Ich Verwende dazu die Network Lib von Oscat.
Ich komme bis zum Punkt wo ich vom FTP Server Folgende Nachricht
bekomme:
"227 Entering Passive Mode (IP,IP,IP,IP,195,80)." (habe die Ip hier mit
IP ersetzt)
Als nächstes sendet die Lib
"STOR /data/filename.csv" (die Daten sollen in das Verzeichnis data)
darauf bekomme ich die Antwort des Servers "500 Internal error"
Weiß jemand was sich der Server nach "227 Entering Passive Mode
(IP,IP,IP,IP,195,80)." erwartet?
Danke für die Hilfe
Er erwartet, das du die Datenverbindung (du sprichst ja gerade auf der
Controlverbindung mit ihm) zu der von ihm angegebenen IP/Port
Kombination per TCP aufbaust und darüber nach dem STOR die Daten
schickst. In deinem Beispiel ist 195 das High-Byte und 80 das Low-byte
(jeweils dezimal) der 16-Bit Portnummer des Servers, auf dem er auf den
Aufbau der Datenverbindung wartet.
ftp _nix_versteher schrieb:> Weiß jemand was sich der Server nach "227 Entering Passive Mode> (IP,IP,IP,IP,195,80)." erwartet?
dass vom client ein socket zur angegebenen ip und port aufgebaut wird,
über den die daten übertragen werden können.
nur beim zeitlichen ablauf (zuerst stor, dann daten oder umgekehrt) bin
ich mir nicht mehr sicher. ist auch erst 15 jahre oder so her dass ich
mir eine ftp lib geschrieben habe ;-)
Hallo @seere
Ja die Lib hat den den Port 50000 aus dem "227 Entering Passive Mode
(IP,IP,IP,IP,195,80)." extraiert.
Und gibt die IP und den Port weiter.
Und schickt dann "STOR /data/filename.csv"
Die Lib erwartet 125 oder 150 als Antwort damit sie weiter macht.
Wie kann ich hier weiter vor gehen?
Danke für die Hilfe
seere schrieb:> 500 deines FTP Servers ist ein Errorcode des Servers.> Besteht zum Zeitpunkt des STOR denn eine TCP Verbindung zu Port 50000?
Wie könnte ich das raus finden?
Nachschauen? Auf der Kiste von der aus dein Programm läuft? Ich glaube
selbst Windows-Büchsen haben sowas wie netstat an Bord.
Oder den Netzverkehr auf der Kiste mit deinem Programm mitschneiden und
analysieren (wireshark to the rescue!)
Oder mit einer Linuxkiste mit zwei Netzwerkinterfaces eine Bridge
dazwischenhängen und über die den Netzwerkverkehr beobachten?
Oder die Kiste mit deinem Programm und die SPS an einen managebaren
Switch hängen, den Traffic der beiden Ports an einen Monitorport
ausleiten und wieder (vorzugsweise Linuxkiste) an diesem Port den
Netzverkehr analysieren.
Möglichkeiten fallen mir viele ein...
Ok ich werde Morgen mal einen Switch zum Mitschneiden dazwischen
klemmen.
Mal sehen ob ich mit Wireshark zurecht komme.
Ist lange her das ich damit gespielt habe.
Noch eine Frage ist es richtig das man "STOR /data/filename.csv"
schreibt?
Warum sendet man schon den Filenamen ob wohl die Übertragung noch nicht
begonnen hat?
Danke für die Hilfe
ftp _nix_versteher schrieb:> Ja vom Pc aus kann ich per Curl die Datei übertragen
Das las ich. Aber es geht um die exakten FTP Kommandos, die dabei
verwendet werden. Sowas wie das "STOR". Im Vergleich zu dem, was dein
Client macht. Müsste sich dem curl irgendwie entlocken lassen.
(prx) A. K. schrieb:> Das zeigt dir, was curl anders macht als du:> curl -v ...
Geil vielen Dank!
Was bedeuten am Zeilen Anfang die * < > Zeichen?
Danke Vielmals
ftp _nix_versteher schrieb:> Was bedeuten am Zeilen Anfang die * < > Zeichen?
Sieht man das nicht?
> Request vom Client
< Response vom Server
* Traceinfo vom curl
ftp _nix_versteher schrieb:> Noch eine Frage ist es richtig das man "STOR /data/filename.csv"> schreibt?
Kommt drauf an, was du machen musst. Das ist ein absoluter Pfad auf dem
Zielsystem oder in einem chroot-jail des FTP-Servers. Möglicherweise ist
STOR data/filename.csv besser. Oder CWD data und STOR filename.csv.
(prx) A. K. schrieb:> ftp _nix_versteher schrieb:>> Was bedeuten am Zeilen Anfang die * < > Zeichen?>> Sieht man das nicht?>> Request vom Client> < Response vom Server> * Traceinfo vom curl
Der Stern hat mich irritiert.
Danke
ftp _nix_versteher schrieb:> Wo wird der Pfad data gesetzt?
Also so langsam zweifle ich daran, dass deine Fragerei ernst ist und
dass das hier Sinn ergibt.
> CWD data
< 250 CWD command successful
(prx) A. K. schrieb:> Kommt drauf an, was du machen musst. Das ist ein absoluter Pfad auf dem> Zielsystem oder in einem chroot-jail des FTP-Servers. Möglicherweise ist> STOR data/filename.csv besser. Oder CWD data und STOR filename.csv.
Ich Verstehe nicht ganz muss mal chroot-jail CWD data und STOR
filename.csv.
googeln.
(prx) A. K. schrieb:> Also so langsam zweifle ich daran, dass deine Fragerei ernst ist und> dass das hier Sinn ergibt.>>> CWD data> < 250 CWD command successful
Wie ich bereits ganz am Anfang geschrieben habe ist das eine Fertige LIB
von OSCAT leider funktioniert diese aber nicht.
Also möchte ich versuchen das Ding zu reparieren.
Peter Pan schrieb:> Spricht etwas gegen eine fertige Bibliothek?
Nichts meine Sps ist aber für Codesys da ist mit siemens nichts.
Danke für die Hilfe
ftp _nix_versteher schrieb:> Nichts meine Sps ist aber für Codesys da ist mit siemens nichts.
Kann man den Code der Bibliothek bei Siemens denn lesen?
Ansonsten würde ich mir an einer simplen Open Source Bibliothek
orientieren, ggf eher mit HTTP Rest...
So jetzt funktioniert die Lib.
Habe den Befehl 'CWD Path' eingebaut und siehe da der Rest funktioniert.
Danke allen für die Hilfe. Besonders nützlich war für Curl der Parameter
-v
Wenn man weiß was ein funktionierendes Programm macht ist das Nachmachen
deutlich einfacher.
Vielen Dank an alle.