Wie FTP-Zugang erstellen ?
Wie FTP-Zugang erstellen ?
moin,
ich möchte gerne Files mittels FTP übers Netzwerk aus meinen Sat-Receiver auslesen, d.h., auslesen, editieren und wieder einspielen.
Wie geht das?
Habe etwas dazu gefunden, aber alles in englisch und die Übersetzung ist auch nicht gerade das Wahre.
Mit diversen datei-managern geht es, aber auch unter Gambas?
Und dann noch einen oder mehrere Befehle rüberschicken, damit der Receiver die neuen Daten einliest.
Gruss
ich möchte gerne Files mittels FTP übers Netzwerk aus meinen Sat-Receiver auslesen, d.h., auslesen, editieren und wieder einspielen.
Wie geht das?
Habe etwas dazu gefunden, aber alles in englisch und die Übersetzung ist auch nicht gerade das Wahre.
Mit diversen datei-managern geht es, aber auch unter Gambas?
Und dann noch einen oder mehrere Befehle rüberschicken, damit der Receiver die neuen Daten einliest.
Gruss
Gruss
Re: Wie FTP-Zugang erstellen ?
Hi,
die Komponente gb.net.curl hat eine Klasse FTPClient [0]. Dort hast du bereits Get() und Put(). Ueber Exec() solltest du dann das Loeschen implementieren koennen.
[0] http://gambasdoc.org/help/comp/gb.net.curl/ftpclient?v3
die Komponente gb.net.curl hat eine Klasse FTPClient [0]. Dort hast du bereits Get() und Put(). Ueber Exec() solltest du dann das Loeschen implementieren koennen.
[0] http://gambasdoc.org/help/comp/gb.net.curl/ftpclient?v3
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!
Re: Wie FTP-Zugang erstellen ?
hi tux,
wenn wie ich jemand keine Ahunug hat, ist es verdammt schwer. (Englisch und sehr knapp)
Ich kann mich schon da einloggen, das war es dann auch.
Befehle die ich rüberschicke werden nicht beantwortet, ausser ein Verzeichnisswechsel.
Er meldet dann, auch unter Gambas, dass ich drin bin und einen Verzeichniswechsel ausgeführt hat.
Habe den Datenaustausch mit 'wireshark' beobachtet, da sehe ich dann wenigstens etwas.
Kein sonstige Anzeige von irgendwas.
Habe versucht Beispiele aus Gambas umzustricken, aber da scheint was zu fehlen?
Gruss
wenn wie ich jemand keine Ahunug hat, ist es verdammt schwer. (Englisch und sehr knapp)
Ich kann mich schon da einloggen, das war es dann auch.
Befehle die ich rüberschicke werden nicht beantwortet, ausser ein Verzeichnisswechsel.
Er meldet dann, auch unter Gambas, dass ich drin bin und einen Verzeichniswechsel ausgeführt hat.
Habe den Datenaustausch mit 'wireshark' beobachtet, da sehe ich dann wenigstens etwas.
Kein sonstige Anzeige von irgendwas.
Habe versucht Beispiele aus Gambas umzustricken, aber da scheint was zu fehlen?
Gruss
Gruss
Re: Wie FTP-Zugang erstellen ?
Hi,
folgender Code funktioniert und holt die in hFTP.URL angegebene Datei auf meinen Desktop:
folgender Code funktioniert und holt die in hFTP.URL angegebene Datei auf meinen Desktop:
Code: Alles auswählen
Dim hFTP As New FtpClient
hFTP.Async = False ' Je nach Geschmack
hFTP.User = $sUsername
hFTP.Password = $sPassword
hFTP.URL = $sHost &/ $sFile
hFTP.Get(User.Home &/ "Desktop" &/ $sFile)
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!
Re: Wie FTP-Zugang erstellen ?
Hallo Gambasso,
unter http://www.gambas-buch.de/dw/doku.php?i ... .3.3:start findest Du ein vollständiges Projekt, welches Du nur noch anpassen musst.
Mit freundlichem Gruß
Honsek
unter http://www.gambas-buch.de/dw/doku.php?i ... .3.3:start findest Du ein vollständiges Projekt, welches Du nur noch anpassen musst.
Mit freundlichem Gruß
Honsek
Honsek (https://www.gambas-buch.de)
---> Wenn Du eine gute Antwort erwartest, musst Du sehr gut fragen!
---> Wenn Du eine gute Antwort erwartest, musst Du sehr gut fragen!
Re: Wie FTP-Zugang erstellen ?
moin,
@ Honsek:
Das Programm habe ich versucht, eine Verbindung wird zu den vorgegebenen Adressen erstellt, aber ein Download kriege ich davon nicht hin.
Zur Verbindung zu meinen Receiver: Im Programm sehe ich nichts davon. Es erscheint die Meldung: "Allgemeiner FTP-Fehler! (-1009)".
Es wird aber eine Verbindung aufgebaut, aber nicht ins vorgegebene Verzeichnis gewechselt.
Das sehe ich im Programm 'wireshark'.
@ tux: danke für den Code, aber ich weiss so recht nicht, wie ich diesen einsetzen soll.
Bei den Gambas Beispielen ist ein 'CLIENTSOCKET', damit komme ich noch am weitesten, aber noch nicht weit genug.
Da fehlen mir noch Kenntnisse zu der Materie.
Wenn ich mir den Datenaustausch mit den Gambas Beispiel und z.B. dem Dateimanager 'Krusader' ansehe, dann werden da bei einfachen Befehlen mit Krusader wesentlich meher Bytes übertragen, obwohl da nur kleine Befehle übermittelt werden.
Gruss
@ Honsek:
Das Programm habe ich versucht, eine Verbindung wird zu den vorgegebenen Adressen erstellt, aber ein Download kriege ich davon nicht hin.
Zur Verbindung zu meinen Receiver: Im Programm sehe ich nichts davon. Es erscheint die Meldung: "Allgemeiner FTP-Fehler! (-1009)".
Es wird aber eine Verbindung aufgebaut, aber nicht ins vorgegebene Verzeichnis gewechselt.
Das sehe ich im Programm 'wireshark'.
@ tux: danke für den Code, aber ich weiss so recht nicht, wie ich diesen einsetzen soll.
Bei den Gambas Beispielen ist ein 'CLIENTSOCKET', damit komme ich noch am weitesten, aber noch nicht weit genug.
Da fehlen mir noch Kenntnisse zu der Materie.
Wenn ich mir den Datenaustausch mit den Gambas Beispiel und z.B. dem Dateimanager 'Krusader' ansehe, dann werden da bei einfachen Befehlen mit Krusader wesentlich meher Bytes übertragen, obwohl da nur kleine Befehle übermittelt werden.
Gruss
Gruss
Re: Wie FTP-Zugang erstellen ?
Hi,
das Problem scheint also eher bei dir oder deinem Receiver zu liegen. Mein abschlieszender Tipp waere: probier mit dem Konsolenprogramm "ftp" herum. Wenn du es dort hinbekommst, ist es in Gambas nicht mehr schwer.
das Problem scheint also eher bei dir oder deinem Receiver zu liegen. Mein abschlieszender Tipp waere: probier mit dem Konsolenprogramm "ftp" herum. Wenn du es dort hinbekommst, ist es in Gambas nicht mehr schwer.
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!
Re: Wie FTP-Zugang erstellen ?
@ Honsek:
Das Programm habe ich versucht, ich sehe jetzt auch ein Verzeichnis, kann auch was auf die Platte dort schreiben,
aber nix von da runterholen.
Zu den anderen Programm 'CLIENTSOCKET' :
damit kann ich mich verbinden, einloggen, und wieder trennen.
Für alles weiter fehlt ihm die Verbindung, Error Code: 425, komisch, ich bin aber verbunden.
Bei STAT erhalte ich:
Da kann ich nur erstmal nichts mit anfangen.
Wer weiss meehr und kann mir helfen?
Gruss
Das Programm habe ich versucht, ich sehe jetzt auch ein Verzeichnis, kann auch was auf die Platte dort schreiben,
aber nix von da runterholen.
Zu den anderen Programm 'CLIENTSOCKET' :
damit kann ich mich verbinden, einloggen, und wieder trennen.
Für alles weiter fehlt ihm die Verbindung, Error Code: 425, komisch, ich bin aber verbunden.
Bei STAT erhalte ich:
Code: Alles auswählen
211-FTP server status:
Connected to 192.168.123.112
Logged in as root
TYPE: ASCII
No session bandwidth limit
Session timeout in seconds is 300
Control connection is plain text
Data connections will be plain text
At session startup, client count was 1
vsFTPd 3.0.2 - secure, fast, stable
211 End of status
Wer weiss meehr und kann mir helfen?
Gruss
Gruss
Re: Wie FTP-Zugang erstellen ?
moin,
habe das kleine Beispiel von Dir , tux, versucht und es klappt.
Ich möchte ganz gerne das Verzeichnis anstelle auf der Festplatte in einem TextArea angezeigt haben.
Geht das auch irgendwie, ohne jetzt das File von der Platte zu laden?
-----
Bei dem ganzen möchte ich auch Befehle zum Gerät schicken. Wenn ich das normal über Firefox mach geht es.
Dabei ruft Firefox die IP des Gerätes auf und es erschein eine Oberfläche, mit der man dann einiges unternehmen kann.
Die Befehle werden über HTTP1.1 geschickt, geht das auch hierrüber?
Habe die Befehle über Wireshark ausgelesen und hierüber verschickt, kommt eine Fehlermeldung, kann er nicht.
Gruss
habe das kleine Beispiel von Dir , tux, versucht und es klappt.
Ich möchte ganz gerne das Verzeichnis anstelle auf der Festplatte in einem TextArea angezeigt haben.
Geht das auch irgendwie, ohne jetzt das File von der Platte zu laden?
-----
Bei dem ganzen möchte ich auch Befehle zum Gerät schicken. Wenn ich das normal über Firefox mach geht es.
Dabei ruft Firefox die IP des Gerätes auf und es erschein eine Oberfläche, mit der man dann einiges unternehmen kann.
Die Befehle werden über HTTP1.1 geschickt, geht das auch hierrüber?
Habe die Befehle über Wireshark ausgelesen und hierüber verschickt, kommt eine Fehlermeldung, kann er nicht.
Gruss
Gruss
Re: Wie FTP-Zugang erstellen ?
Hi,
ich war diesmal gezwungen, etwas mehr in die FTPClient-Klasse hineinzusehen (habe dabei sogar einen Bug entdeckt, den ich bereits korrigiert habe), deshalb kann ich dir erstmal zwei Tipps zum Debuggen deiner Programme geben: Anstatt wireshark (was ich fuer umstaendlicher halte), kannst du auch
setzen und dir so alle FTP-Kommandos anzeigen lassen. Auszerdem kann
hilfreich sein. Du gibst damit alle Fehlermeldungen aus - wenn dein FTPClient den Eventnamen "FTP" besitzt.
Was das eigentliche Problem angeht: der FTPClient ist m.E. nicht benutzbar, wenn die Aufgaben ueber Get() und Put() hinausgehen:
Du koenntest das Programm "ftp" fuer deine Zwecke instrumentalisieren. Dort klappt bereits alles. Du erfaehrst hier [0], wie du externe Programme von deinem Gambas-Programm aus fernsteuern kannst.
Solltest du allerdings mit obigem Satz meinen, dass du eine _Datei_ in einer TextArea anzeigen lassen willst, anstatt sie in einer lokalen Datei zwischenzuspeichern, dann: Ja. Es muessen aber zwei Voraussetzungen gegeben sein: 1. FTPClient.Async = True und 2. FTPClient.Get() muss ohne Argument aufgerufen werden. In diesem Fall wird das Read-Event des FTPClients ausgeloest, in dem du die Daten ueber Read lesen musst (Line Input funktioniert seit Revision #5554, das wird in einem zukuenftigen Gambas 3.4.1 offiziell verfuegbar werden):
Das funktioniert.
[0] http://www.gambas-buch.de/dw/doku.php?i ... 21.3:start - und Unterkapitel
ich war diesmal gezwungen, etwas mehr in die FTPClient-Klasse hineinzusehen (habe dabei sogar einen Bug entdeckt, den ich bereits korrigiert habe), deshalb kann ich dir erstmal zwei Tipps zum Debuggen deiner Programme geben: Anstatt wireshark (was ich fuer umstaendlicher halte), kannst du auch
Code: Alles auswählen
FTPClient.Debug = True
Code: Alles auswählen
Public Sub FTP_Error()
Error "Error: "; Last.ErrorText
End
Was das eigentliche Problem angeht: der FTPClient ist m.E. nicht benutzbar, wenn die Aufgaben ueber Get() und Put() hinausgehen:
Was meinst du damit? Ich nehme an, dass du aehnlich "ls" den Verzeichnisinhalt anzeigen lassen willst. Ich habe mittlerweile ueber zwei Stunden daran herumgedoktert, mir den Inhalt von / ueber das LIST-Kommando anzeigen zu lassen - ohne Erfolg. Das Problem: diese Aufgabe erfordert, dass der Server in den "passive mode" wechselt und dort seine Daten sendet, womit der FTPClient nicht rechnet. Man kommt also nicht an die Daten heran. Das wird z.Z. auf der Mailingliste diskutiert.Ich möchte ganz gerne das Verzeichnis anstelle auf der Festplatte in einem TextArea angezeigt haben.
Du koenntest das Programm "ftp" fuer deine Zwecke instrumentalisieren. Dort klappt bereits alles. Du erfaehrst hier [0], wie du externe Programme von deinem Gambas-Programm aus fernsteuern kannst.
Solltest du allerdings mit obigem Satz meinen, dass du eine _Datei_ in einer TextArea anzeigen lassen willst, anstatt sie in einer lokalen Datei zwischenzuspeichern, dann: Ja. Es muessen aber zwei Voraussetzungen gegeben sein: 1. FTPClient.Async = True und 2. FTPClient.Get() muss ohne Argument aufgerufen werden. In diesem Fall wird das Read-Event des FTPClients ausgeloest, in dem du die Daten ueber Read lesen musst (Line Input funktioniert seit Revision #5554, das wird in einem zukuenftigen Gambas 3.4.1 offiziell verfuegbar werden):
Code: Alles auswählen
Private $hFTP As FtpClient
' FTP-Daten fuer unten...
Public Sub _new()
$hFTP = New FtpClient As "FTP"
$hFTP.User = $sUser
$hFTP.Password = $sPass
$hFTP.URL = $sHost &/ $sFile
$hFTP.Get()
End
Public Sub FTP_Read()
Dim sFile As String
Read #Last, sFile, Lof(Last)
Print sFile
End
Nein. HTTP ist nicht FTP. Du wirst den HTTPClient aus gb.net.curl oder aehnliches benutzen muessen.Die Befehle werden über HTTP1.1 geschickt, geht das auch hierrüber?
[0] http://www.gambas-buch.de/dw/doku.php?i ... 21.3:start - und Unterkapitel
Zuletzt geändert von tux_ am So 17. Feb 2013, 12:31, insgesamt 1-mal geändert.
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!
Re: Wie FTP-Zugang erstellen ?
Hi,
auf der Mailingliste kam heraus, dass man FTPClient.Get("host/verzeichnis") benutzen kann, um sich den Inhalt von "verzeichnis" wie den Inhalt einer Datei herunterzuladen. Vielleicht hast du jetzt alles beisammen, was du brauchst?
auf der Mailingliste kam heraus, dass man FTPClient.Get("host/verzeichnis") benutzen kann, um sich den Inhalt von "verzeichnis" wie den Inhalt einer Datei herunterzuladen. Vielleicht hast du jetzt alles beisammen, was du brauchst?
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!
Re: Wie FTP-Zugang erstellen ?
moin,
mit 2 Fenster (Formen) habe ich etwas mehr schon geschaft.
In jedem Fenster muß ein 'Socket' aktiv werden.
Im ersten logge ich mich richtig ein. Dort erhalte ich dann die Port-Adresse (nach PASV oder EPSV) für das zweite Einloggen.
Dort logge ich mich ein mit der Port-Adresse aus dem 1.Fenster.
Gebe ich dann im 1.Fenster den 'LIST' - Befehl, erscheint die Ausgabe im 2.Fenster.
Das ganze kann man auch im Terminal mit 'telnet' nachvollziehen.
Theoretisch müßte man doch auf einer Form 2 x ein Socket benutzen können, um dann in einer Form zu bleiben.
Liege ich da richtig?
Gruss
mit 2 Fenster (Formen) habe ich etwas mehr schon geschaft.
In jedem Fenster muß ein 'Socket' aktiv werden.
Im ersten logge ich mich richtig ein. Dort erhalte ich dann die Port-Adresse (nach PASV oder EPSV) für das zweite Einloggen.
Dort logge ich mich ein mit der Port-Adresse aus dem 1.Fenster.
Gebe ich dann im 1.Fenster den 'LIST' - Befehl, erscheint die Ausgabe im 2.Fenster.
Das ganze kann man auch im Terminal mit 'telnet' nachvollziehen.
Theoretisch müßte man doch auf einer Form 2 x ein Socket benutzen können, um dann in einer Form zu bleiben.
Liege ich da richtig?
Gruss
Gruss
Re: Wie FTP-Zugang erstellen ?
Hi,
korrekt. Ich habe untern den gambas-usern auch schon vorgeschlagen, den FtpClient, wie er z.Z. ist, durch einen einfacheren auf Basis zweier Sockets zu ersetzen.
korrekt. Ich habe untern den gambas-usern auch schon vorgeschlagen, den FtpClient, wie er z.Z. ist, durch einen einfacheren auf Basis zweier Sockets zu ersetzen.
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!
Re: Wie FTP-Zugang erstellen ?
hi tux,
kann man das erhaltene Verzeichnis so beeinflussen, daß man es mit einen Dialog oder FileChooser bearbeiten kann?
So wie es in dem Textfeld erscheint, kann man damit nichts anfangen,
man müßte den Text auseinanderflücken um was damit anzustellen.
Gruss
kann man das erhaltene Verzeichnis so beeinflussen, daß man es mit einen Dialog oder FileChooser bearbeiten kann?
So wie es in dem Textfeld erscheint, kann man damit nichts anfangen,
man müßte den Text auseinanderflücken um was damit anzustellen.
Gruss
Gruss
Re: Wie FTP-Zugang erstellen ?
Hi,
du muesstest die Events des FileChooser abfangen und dann in FTP-Kommandos umwandeln, z.B. FileChooser_Active() abfangen (Doppelklick auf eine Datei) und als ein RETR-Kommando zum FTP-Server senden. Das ist sicher moeglich, braucht aber eine genaue Kenntnis des FileChoosers und des FTP-Protokolls.
du muesstest die Events des FileChooser abfangen und dann in FTP-Kommandos umwandeln, z.B. FileChooser_Active() abfangen (Doppelklick auf eine Datei) und als ein RETR-Kommando zum FTP-Server senden. Das ist sicher moeglich, braucht aber eine genaue Kenntnis des FileChoosers und des FTP-Protokolls.
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast