TbeCbSFTP
TbeCbSFTP
Klasse zur Kommunikation mit SFTP-Diensten
SFTP ist ein File-Transfer-Protokoll, welches SSH und TCP/IP nutzt.
Hinweis
Remote Pfade und Remote Filename müssen als Verzeichnis-Separator den Schrägstrich und nicht den Backslash nutzen, z.B: user/sub/date/datei.txt
Falls eine Anmeldung mit einer Privat-Schlüssel-Datei erfolgen soll, existiert die Methode AuthenticateByFile(), die auch einen eigenen Parameter für ein Kennwort besitzt. Falls jedoch die Passwort-Eigenschaft des Objekts gesetzt ist, wird ein vorheriger Aufruf der Funktion AuthenticateByFile() ignoriert.
Eigenschaften:
Eigenschaften | ||
HostName:C | SFTP Server-Name: Angabe entweder IP-Adresse oder Domain-Name möglich. Muss eingegeben werden. | |
Port:N | SFTP Server-PortDefault: 22 | |
User:C | SFTP Benutzername | |
Password:C | SFTP Benutzer-Kennwort | |
KeyHash:C | Standardmäßig Hash von Privat-Schlüssel für Überprüfung. Read-Only | |
Timeout:N | Timeout der TCP Verbindung in SekundenDefault: 15 | |
KeepAlive:L | TCP "Keep-Alive" Pakete schickenDefault: true | |
LoggingActive:L | Internes Logging einschalten. Log zu LogText und FullLogText schreibenDefault: false | |
LogText:O | Output Objekt TStrings, das speichert interne Logging-Output, falls es mit LoggingActive eingeschaltet wurde. | |
FullLogText:C | Output String, das speichert interne Logging-Output, falls es mit LoggingActive eingeschaltet wurde. | |
DirectoryList:O | Output Objekt TList, das speichert Ergebnis vom letzten Aufruf der OpenDirectory() | |
Verfügbare Ereignisse | ||
OnValidateServerKey | Beim Validieren des SSH-Schlüssels des Servers | |
Funktionen und Methoden | ||
AuthenticateByFile(aFileName:C, aPassword:C):C | Setzt die Authentifizierung mit Privat-Schlüssel-Datei an. Gibt MD5-Hash vom eingegebenen Privat-Schlüssel-Datei.> Pfad zur Privat-Schlüssel-Datei. | |
Connect() | Erstellt Verbindung um Eigenschaften | |
Disconnect() | Beendet Verbindung | |
OpenDirectory(aPath:C):A | Gibt ein Array aus, der die Namen, Größen und Daten der letzten Änderungen von die Dateien im Remote-Pfad beinhaltet. | |
RemoveFile(aFileName:C) | Löscht Remote-Datei | |
CreateDir(aDirName:C) | Erzeugt neue Remote-Verzeichnis | |
RemoveDir(aDirName:C, aRecursive:B) | Löscht Remote-Verzeichnis | |
RenameFile(aOldPath:C, aNewPath:C) | Verschiebung oder Umbenennung einem Remote-Datei oder einem Remote-Verzeichnis | |
DownloadFile(aRemoteFile:C, aLocalFile:C, aOverwrite:L) | Downloaded Remote-Datei zu Lokal-Datei, falls das Local-Datei existiert muss aOverwrite das Wert truehaben | |
UploadFile(aLocalFile:C, aRemoteFile:C, aOverwrite:L) | Uploaded Lokal-Datei zu Remote-Datei, falls das Remote-Datei existiert muss aOverwrite das Wert truehaben |
Beispiel
|oSFTP, bUseKeyFile, aVerzeichnis, aFile|
oSFTP := CreateObject("TbeCbSFTP"),
oSFTP.HostName := '192.167.10.10',
oSFTP.Port := 22,
oSFTP.User := 'MyName',
if bUseKeyFile then
oSFTP.AuthenticateByFile('Pfad_zu_privat_key\privat_file_name', 'KeyPassword'),
else
oSFTP.Password := 'MyPassword',
endif,
function VerifyKey(oSender,aKeyHash,aValue),
if aKeyHash = '01:23:45:67:89:ab:cd:ef:01:23:34:45:67:89:ab:cd:ef:01:23:34' then
aValue := true,
else
Writeln('Unknwon server key: ' + aKeyHash),
endif,
end,
AssignEvent(oSFTP,"OnValidateServerKey","VerifyKey"),
oSFTP.Connect(),
aVerzeichnis := oSFTP.OpenDirectory(""), // default Verzeichnis lesen
foreach aFile in aVerzeichnis do
if Left(aFile[1],1) = '<' then
Writeln('Directory Name: ' + aFile[1]),
else
Writeln('File Name: ' + aFile[1] + ' Size: ' +Str(aFile[2]) + ' Datum der letzten Änderung: ' + DateTimeToStr(aFile[3])),
endif
end,
oSFTP.Disconnect(),