Seite 1 von 1

FTP und SFTP Client Problem

Verfasst: 13.03.2025 16:26
von PIC18F2550
Hallo,

wiso bekomme ich bei SFTP keine Verzeichnisanzeige wie bei FTP.

Code: Alles auswählen

If OpenFTP(0, "sftp://192.168.3.200", "admin","nonono",#True,2002)
  Debug "sftp: Erfolgreich verbunden"
  Debug GetFTPDirectory(0)
  If ExamineFTPDirectory(0)
    Debug NextFTPDirectoryEntry(0)
    While NextFTPDirectoryEntry(0)
      Debug FTPDirectoryEntryRaw(0)
    Wend
    FinishFTPDirectory(0)
  EndIf
  CloseFTP(0)
Else
  Debug "Konnte keine sftp: Verbindung aufbauen."
EndIf

If OpenFTP(0, "ftp://192.168.3.200", "admin","nonono",#True,2001)
  Debug "ftp: Erfolgreich verbunden"
  Debug GetFTPDirectory(0)
  If ExamineFTPDirectory(0)
    Debug NextFTPDirectoryEntry(0)
    While NextFTPDirectoryEntry(0)
      Debug FTPDirectoryEntryRaw(0)
    Wend
    FinishFTPDirectory(0)
  EndIf
  CloseFTP(0)
Else
  Debug "Konnte keine ftp: Verbindung aufbauen."
EndIf
Und so sieht die Antwort aus.

Code: Alles auswählen

sftp: Erfolgreich verbunden
/
1



ftp: Erfolgreich verbunden
/
1
drwxrwxrwx   1 root     root             4096 Jan 15 14:54 TEST
drwxrwxrwx   1 root     root            12288 Aug 12  2024 Transfer
drwxrwxrwx   1 root     root             4096 Feb  1 14:36 web
Das Problem liegt wohl in FTPDirectoryEntryRaw(0) begraben.

Danke

Re: FTP und SFTP Client Problem

Verfasst: 14.03.2025 15:22
von PIC18F2550
Es scheinen die Funktion
FTPDirectoryEntryRaw()
SetFTPDirectory()
betroffen zu sein.

Bei
Debug FTPDirectoryEntryAttributes()
Debug FTPDirectoryEntryDate()
Debug FTPDirectoryEntryName()
Debug FTPDirectoryEntrySize()
Debug FTPDirectoryEntryType()
werden die Werte richtig ausgegeben.

Könnte das ein Bug sein?

--> PureBasic 6.20 (Windows - x86)

Normalerweise bediene ich den FTP-Server mit Filezilla aber dort gibt es keine Probleme.

Noch etwas ist mir aufgefallen die Ausgabe reinfolge ist unterschiedlich. :shock:

Code: Alles auswählen

sftp: Erfolgreich verbunden
/
web
Transfer
TEST
/photo/
OK

ftp: Erfolgreich verbunden
/
TEST
Transfer
web
/photo/
OK

Re: FTP und SFTP Client Problem

Verfasst: 14.03.2025 16:52
von NicTheQuick
SFTP ist ein grundlegend unterschiedliches Protokoll im Vergleich zu FTP. Ein SSL/TLS-Äquivalent zu FTP wäre FTPS.
Das heißt auf der Serverseite werden SFTP- und FTP-Service wahrscheinlich von zwei völlig verschiedenen Prozessen zur Verfügung gestellt, d.h. die können sich auch komplett unterschiedlich verhalten.

Ich habe aber ehrlicherweise in Purebasic noch nie mit `OpenFTP()` gearbeitet. Da es laut Hilfe angeblich SFTP unterstützt, wundere ich mich allerdings darüber, dass es offenbar nicht möglich ist sich auch mittels Public Key zu identifizieren, sondern nur mit Passwort. Ich habe es mal ausprobiert. Bei mir scheint es zu funktionieren, aber nicht mit `FTPDirectoryEntryNameRaw()`:

Code: Alles auswählen

If OpenFTP(0, "sftp://192.168.178.31", "nicolas","super-sicheres-passwort", True,22)
	Debug "sftp: Erfolgreich verbunden"
	Debug GetFTPDirectory(0)
	If ExamineFTPDirectory(0)
		;Debug NextFTPDirectoryEntry(0)
		While NextFTPDirectoryEntry(0)
			Debug FTPDirectoryEntryName(0)
		Wend
		FinishFTPDirectory(0)
	EndIf
	CloseFTP(0)
Else
	Debug "Konnte keine sftp: Verbindung aufbauen."
EndIf
Das ergibt folgendes:
Debugger hat geschrieben:sftp: Erfolgreich verbunden
/
1
mnt
sbin -> usr/sbin
sys
opt
srv
dev
home
cdrom
libx32 -> usr/libx32
var
bin -> usr/bin
usr
snap
root
proc
etc
run
lib64 -> usr/lib64
lib32 -> usr/lib32
media
lib -> usr/lib
boot
..
.
Witzig wird es aber, wenn man versucht einen anderen Ordner aufzulisten, z.B. so:

Code: Alles auswählen

If OpenFTP(0, "sftp://192.168.178.31/home/nicolas", "nicolas","immer-noch-super-sicher",True,22)
Dann erhält man nur:
Debugger hat geschrieben:sftp: Erfolgreich verbunden
/home/nicolas:22/
Das heißt die Verbindung wird hergestellt, aber trotzdem macht er was ganz komisches. Da muss man dann daran denken, dass man `SetFTPDirectory(0, "/home/nicolas")` nutzen sollte.

Re: FTP und SFTP Client Problem

Verfasst: 14.03.2025 16:56
von NicTheQuick
Achso, und `SetFTPDirectory()` funktioniert bei mir mit SFTP:

Code: Alles auswählen

If OpenFTP(0, "sftp://192.168.178.31", "nicolas","jetzt-noch-sicherer",True,22)
	SetFTPDirectory(0, "/home/nicolas")
Ergibt gekürzt:
sftp: Erfolgreich verbunden
/home/nicolas/
tmp
<...>
TODO.txt~
Öffentlich
Dokumente
<...>
.condarc
.thunderbird
.python_history
..
.
Etwas nervig ist höchstens, dass Umlaute offenbar nicht funktionieren. In diesem Fall wird aus "Öffentlich" das Kunstobjekt "Öffentlich".

Die Funktion 'FTPDirectoryEntryRaw()' funktioniert bei SFTP allerdings wohl wirklich nicht korrekt.

Re: FTP und SFTP Client Problem

Verfasst: 15.03.2025 10:34
von Bisonte
Gab es da nicht einmal eine Anmerkung in der Dokumentation der FTP Funktionen,
dass es bei bestimmten Servern oder Servertypen nicht richtig funktioniert... ?
Ich glaube da ware von Microsoft Servern die Rede, bin mir aber nicht sicher.

Edit:

Aaaaber andersgesagt ist gerade die Beta 6.21 rausgerutscht, und dort wurde auch was an der FTP-Lib gemacht.
Also wieder an die Testbench ;)

Re: FTP und SFTP Client Problem

Verfasst: 15.03.2025 12:04
von PIC18F2550
Der Server ist ein neuer Synology, keine Ahnung was das für ein System ist.
Aber auch bei Linux Servern scheint das aufzutreten.

Mein letzter Windserver war ein 2000er.