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
500 deines FTP Servers ist ein Errorcode des Servers. Besteht zum Zeitpunkt des STOR denn eine TCP Verbindung zu Port 50000?
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
(prx) A. K. schrieb: > Lassen sich die FTP-Operationen per PC als Client testweise durchführen? Ja vom Pc aus kann ich per Curl die Datei übertragen
1 | curl --ftp-pasv ftp://cloud.xx.xx/data/ -u "user:pass" -T "/flash/plc/applications/fielname.csv" |
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.
:
Bearbeitet durch User
(prx) A. K. schrieb: > Lassen sich die FTP-Operationen per PC als Client testweise durchführen? Wie könnte ich das machen?
Das zeigt dir, was curl anders macht als du: curl -v ...
:
Bearbeitet durch User
(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
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
(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
1 | # curl -v --ftp-pasv ftp://cloud.xxx.xx/data/ -u "user:pass" -T "/flash/plc/applications/filename.csv"
|
2 | % Total % Received % Xferd Average Speed Time Time Time Current |
3 | Dload Upload Total Spent Left Speed |
4 | 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0< 220 Welcome. |
5 | > USER xxxxxx |
6 | < 331 Password required for xxxxxxx. |
7 | > PASS xxxxxxxxx |
8 | < 230 User xxxxxxxx logged in. |
9 | > PWD |
10 | < 257 "/" is current directory. |
11 | > CWD data |
12 | < 250 CWD command successful |
13 | > EPSV |
14 | < 502 Command not implemented |
15 | > PASV |
16 | < 227 Entering Passive Mode (xxx,xxx,xxx,xxx,195,80). |
17 | > TYPE I |
18 | < 200 Transfer type set. |
19 | > STOR fielname.csv |
20 | < 150 Opening PASV data connection. |
21 | } [288 bytes data] |
22 | < 226 Transfer complete. Received 288 bytes. |
23 | 100 288 0 0 100 288 0 1224 --:--:-- --:--:-- --:--:-- 1333 |
24 | ~ # |
So sieht es aus. Wo wird der Pfad data gesetzt? Weil Curl macht STOR filename.csv und mein Programm macht STOR /data/filename.csv
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
:
Bearbeitet durch User
ftp _nix_versteher schrieb: > STOR fielname.csv Sach mal, hast du das Protokoll abgetippt?
:
Bearbeitet durch User
https://support.industry.siemens.com/cs/document/81367009/ftp-client-kommunikation-durch-lftp-bibliothek-mit-s7-1500?dti=0&lc=de-DE Spricht etwas gegen eine fertige Bibliothek?
(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...
Eine ältere Seite, aber recht brauchbar als grobe Übersicht zum FTP-Protokoll: https://cr.yp.to/ftp.html
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.