FTP Datentransfer

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo ,
    hat jemand unter C / C++ mit dem Raspberry einen Datentransfer per FTP hin bekommen ?
    Ich habe mein komplettes Programm zur Temperaturerfassung unter C / C++ geschrieben und funktioniert auch einwandfrei (momentan 3 x DS18B20 ).
    Wie bekomme ich die Daten per FTP auf einen FTP Server ???

    Hat hier jemand damit Erfahrung ?

    Gruß
    Paladin43

  • Hallo.
    Denke ,das hier link kann Dir evtl. weiterhelfen, wenn ich Deine Frage richtig verstanden habe.
    Speichere Deine(n) gelesenen Wert(e) in ein File, und ab damit.

    gruß root

    Einmal editiert, zuletzt von root (7. November 2014 um 02:44)


  • hat jemand unter C / C++ ...
    ...
    Wie bekomme ich die Daten per FTP auf einen FTP Server ???

    Du könntest z. B. mit der ftplib versuchen: http://nbpfaus.net/~pfau/ftplib/ftplib.html

    Code
    apt-get -s install ftplib3 ftplib-dev

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Am einfachsten wäre sicher eine ftp-library wie von rpi444 vorgeschlagen. Aber wenn es um nichts anderes geht als eine Datei unverschlüsselt auf einen FTP-Server hochzuladen, ist das auch ganz einfach händisch machbar. Dabei lernt man dann gleich noch etwas über Sockets und das FTP-Protokoll und es ist kaum mehr als eine Seite Code. Findet man auch einige fertige Beispiele bei Google die man nur noch den eigenen Wünschen anpassen muss.

    Generell läuft die Übertragung so ab, genaueres im RFC959:

    1. TCP-Socket erstellen und mit dem Server verbinden
    2. Server-message empfangen (idR Code 220)
    3. Authentification, also login Name mit dem Befehel USER an den Server schicken und auf Bestätigung warten (331)
    4. Passwort mit dem Kommando PASS schicken und auf Bestätigung warten (230)
    Jetzt bist du verbunden und kannst Operationen ausführen, zB eine Datei mithilfe des passive-Modes hochladen:
    5. Kommando PASV schicken, als Antwort erhältst du eine IP und einen Port an den du die Datei schickst
    6. Zweiten Socket auf der gegebenenen IP&Port öffnen
    7. Kommando STOR über den ersten Socket schicken um eine Dateiübertragung anzuzeigen
    8. Daten über den zweiten Socket senden
    10. Zweiten Socket schließen, je nachdem ob du noch mehr schicken willst oder nicht auch den ersten Socket schließen und das Programm verlassen

    Die zwei Sockets sind beim FTP passive-Mode nötig um eine Kontroll- und eine Datenleitung zu haben die seperat genutzt werden. Alle Anweisungen werden über die Kontrollleitung an den öffentlichen FTP-Port des Servers geschickt, die tatsächliche Datenübertragung findet aber dann auf anderen Ports statt. Genauer ist das, wie auch die Syntax der Befehle, im offiziellen FTP-Protokoll beschrieben.

    FTP-Protokoll: http://tools.ietf.org/html/rfc959
    Kompletter Client (für deine Zwecke sicher oversized): https://github.com/sunaku/simple-ftp/blob/master/client.c
    Beispiel mit Curl-Library: http://curl.haxx.se/libcurl/c/ftpupload.html

  • Für Bankdaten wäre deine Methode um Längen besser als unverschlüsseltes FTP ;)

    Die einfachste Methode ist nicht immer die passendste oder spaßigste. Abgesehen davon dass für SFTP auch erstmal ein entsprechender Server laufen muss, das lese ich aus dem Startpost nicht raus. Außerdem ist es, wenn in C implementiert, trotzdem ein bisschen mehr als "die Daten per sftp rüber". Hier wäre ein ganz nettes Beispiel für SFTP:
    http://stackoverflow.com/questions/1369…libssh-and-sftp


  • Hallo ,
    hat jemand unter C / C++ mit dem Raspberry einen Datentransfer per FTP hin bekommen ?
    Ich habe mein komplettes Programm zur Temperaturerfassung unter C / C++ geschrieben und funktioniert auch einwandfrei (momentan 3 x DS18B20 ).
    Wie bekomme ich die Daten per FTP auf einen FTP Server ???

    Hat hier jemand damit Erfahrung ?

    Gruß
    Paladin43

    Unter C++ habe ich noch nicht versucht, aber unter C läuft es recht gut. Ein einfacher Weg wäre, vom Programm ein bash-Script erzeugen (das das entsprechende FTP-Script enthält) und dieses dann ausführen zu lassen.

    Viel Erfolg
    Wolfgang

  • Also so gesehen gäbe es mehrere Möglichkeiten:
    1. mit einem system() evtl. in Verbindung mit einem script die Daten transferieren ...
    2. mit popen() eine R/W pipe bedienen, und die Kommandos aus dem Programm schicken ...
    3. über sockets selbst mit dem ftpd reden ...
    4. eine Lib dazu verwenden ...
    5. ????

    Ich kann halt jetzt nicht sagen was unserem TE da am leichtesten fällt :s

    cu,
    -ds-

  • Hallo ,
    war jetzt lange weg .
    Hab das Ganze jetzt über ein Python Script gelöst .
    Bash hat nich so richtig funktioniert .

    Wenn jemand das C Code für den 1-Wire haben will soll er sich melden .

    Gruß
    Thomas

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!