Hallo zusammen,
ich wollte mir ein kleines Tool basteln das ein Verzeichnis überwacht und Dateien mit bestimmten Endungen auf mein NAS (@Home) über eine SSH-Verbindung verschiebt, sprich mit SFTP. Soweit so gut.
Ich würde dafür gerne die dll von Winscp nutzen da diese kostenfrei zur Verfügung gestellt wird und sogar mit Beispiel wie man sie verwendet. Ich hab nun das Beispiel für mich angepasst, bekomme aber vom Server immer die Nachricht: "No such File"
Auszug aus meinem Code:
Die Funktion wird mit dem vollen Pfad der Datei aufgerufen die ich zu verschieben beabsichtige. Das Verzeichnis auf dem SSH-Server ist vorhanden. Die entsprechenden Rechte die Datei anzulegen hat der Benutzer auch (Mit der GUI von WinSCP kann ich die Datei kopieren/verschieben)
Exception:
Error: WinSCP.SessionRemoteException: Kann die entfernte Datei '/volume1/Verz1/Testfiles/Datei.xyz' nicht anlegen.
Datei oder Verzeichnis nicht gefunden.
Fehlercode: 2
Fehlernachricht vom Server : No such file
bei WinSCP.OperationResultBase.Check()
In dem Logfile kann ich erkennen das die Verbindung zum Server richtig aufgebaut wird. Die Exception kommt sobald der Server versucht die Datei anzulegen.
Auszug aus Log:
< 2016-08-25 10:33:33.006 Script: Aktive Sitzung: [1] MeinUser@MeineIP
> 2016-08-25 10:33:33.766 Script: pwd
< 2016-08-25 10:33:33.766 Script: /
> 2016-08-25 10:33:33.819 Script: put -delete -nopermissions -nopreservetime -transfer="binary" -resumesupport="off" -- "C:\Users\MeinUser\Downloads\Datei.xyz" "/volume1/Verz1/Testfiles/"
. 2016-08-25 10:33:33.830 Copying 1 files/directories to remote directory "/volume1/Verz1/Testfiles/"
. 2016-08-25 10:33:33.830 PrTime: No; PrRO: No; Rght: rw-r--r--; PrR: No (No); FnCs: N; RIC: 0100; Resume: N (102400); CalcS: No; Mask:
. 2016-08-25 10:33:33.830 TM: B; ClAr: No; RemEOF: No; RemBOM: No; CPS: 0; NewerOnly: No; InclM: ; ResumeL: 0
. 2016-08-25 10:33:33.830 AscM: *.*html; *.htm; *.txt; *.php; *.php3; *.cgi; *.c; *.cpp; *.h; *.pas; *.bas; *.tex; *.pl; *.js; .htaccess; *.xtml; *.css; *.cfg; *.ini; *.sh; *.xml
. 2016-08-25 10:33:33.830 File: 'C:\Users\MeinUser\Downloads\Datei.xyz' [2016-08-25T08:33:31.943Z] [1457028]
. 2016-08-25 10:33:33.831 Copying "C:\Users\MeinUser\Downloads\Datei.xyz" to remote directory started.
. 2016-08-25 10:33:33.831 Binary transfer mode selected.
. 2016-08-25 10:33:33.831 Opening remote file.
> 2016-08-25 10:33:33.832 Type: SSH_FXP_OPEN, Size: 171, Number: 259
< 2016-08-25 10:33:33.847 Type: SSH_FXP_STATUS, Size: 29, Number: 259
< 2016-08-25 10:33:33.847 Status code: 2, Message: 259, Server: No such file, Language:
> 2016-08-25 10:33:33.847 Type: SSH_FXP_LSTAT, Size: 155, Number: 519
< 2016-08-25 10:33:33.862 Type: SSH_FXP_STATUS, Size: 29, Number: 519
< 2016-08-25 10:33:33.862 Status code: 2, Message: 519, Server: No such file, Language:
* 2016-08-25 10:33:33.862 (ETerminal) Datei oder Verzeichnis nicht gefunden.
* 2016-08-25 10:33:33.862 Fehlercode: 2
* 2016-08-25 10:33:33.862 Fehlernachricht vom Server : No such file
Ich hab schon versucht die Zieldatei mit an das Zielverzeichnis anzuhängen, den Pfad mit "/" am ende und ohne. Aber immer derselbe Fehler.
z.B.:
transferResult = session.PutFiles("C:\Users\MeinUser\Downloads\Datei.xyz", "/volume1/Verz1/Testfiles/Datei.xyz", True, transferOptions)
transferResult = session.PutFiles("C:\Users\MeinUser\Downloads\Datei.xyz", "/volume1/Verz1/Testfiles", True, transferOptions)
transferResult = session.PutFiles("C:\Users\MeinUser\Downloads\Datei.xyz", "/volume1/Verz1/Testfiles/", True, transferOptions)
transferResult = session.PutFiles("C:\Users\MeinUser\Downloads\*", "/volume1/Verz1/Testfiles/", True, transferOptions)
Hat jemand einen Hinweis oder eine Idee woran es liegen kann?
Gruß
Smurf
ich wollte mir ein kleines Tool basteln das ein Verzeichnis überwacht und Dateien mit bestimmten Endungen auf mein NAS (@Home) über eine SSH-Verbindung verschiebt, sprich mit SFTP. Soweit so gut.
Ich würde dafür gerne die dll von Winscp nutzen da diese kostenfrei zur Verfügung gestellt wird und sogar mit Beispiel wie man sie verwendet. Ich hab nun das Beispiel für mich angepasst, bekomme aber vom Server immer die Nachricht: "No such File"
Auszug aus meinem Code:
Quellcode
- Private Function MyTransfer(File As String) As String
- Try
- ' Setup session options
- Dim sessionOptions As New SessionOptions
- With sessionOptions
- .Protocol = Protocol.Sftp
- .HostName = "MeineIP"
- .UserName = "MeinUser"
- .Password = passwd
- .PortNumber = MeinPort
- .SshHostKeyFingerprint = "MeinFingerprintvomSSHServer"
- End With
- Using session As New Session
- session.SessionLogPath = Environ("USERPROFILE") & "\Desktop\Log.txt"
- ' Connect
- session.Open(sessionOptions)
- ' Upload files
- Dim transferOptions As New TransferOptions
- transferOptions.TransferMode = TransferMode.Binary
- transferOptions.FilePermissions = Nothing
- transferOptions.PreserveTimestamp = False
- transferOptions.ResumeSupport.State = TransferResumeSupportState.Off
- Dim transferResult As TransferOperationResult
- transferResult = session.PutFiles(File, "/volume1/Verz1/Testfiles/", True, transferOptions)
- ' Throw on any error
- transferResult.Check()
- ' Print results
- For Each transfer In transferResult.Transfers
- UpdateTextBox("Upload of " & transfer.FileName & " succeeded")
- 'Console.WriteLine("Upload of {0} succeeded", transfer.FileName)
- Next
- End Using
- Return 0
- Catch e As Exception
- UpdateTextBox("Error: " & e.ToString)
- 'Console.WriteLine("Error: {0}", e)
- Return 1
- End Try
- End Function
Die Funktion wird mit dem vollen Pfad der Datei aufgerufen die ich zu verschieben beabsichtige. Das Verzeichnis auf dem SSH-Server ist vorhanden. Die entsprechenden Rechte die Datei anzulegen hat der Benutzer auch (Mit der GUI von WinSCP kann ich die Datei kopieren/verschieben)
Exception:
Error: WinSCP.SessionRemoteException: Kann die entfernte Datei '/volume1/Verz1/Testfiles/Datei.xyz' nicht anlegen.
Datei oder Verzeichnis nicht gefunden.
Fehlercode: 2
Fehlernachricht vom Server : No such file
bei WinSCP.OperationResultBase.Check()
In dem Logfile kann ich erkennen das die Verbindung zum Server richtig aufgebaut wird. Die Exception kommt sobald der Server versucht die Datei anzulegen.
Auszug aus Log:
< 2016-08-25 10:33:33.006 Script: Aktive Sitzung: [1] MeinUser@MeineIP
> 2016-08-25 10:33:33.766 Script: pwd
< 2016-08-25 10:33:33.766 Script: /
> 2016-08-25 10:33:33.819 Script: put -delete -nopermissions -nopreservetime -transfer="binary" -resumesupport="off" -- "C:\Users\MeinUser\Downloads\Datei.xyz" "/volume1/Verz1/Testfiles/"
. 2016-08-25 10:33:33.830 Copying 1 files/directories to remote directory "/volume1/Verz1/Testfiles/"
. 2016-08-25 10:33:33.830 PrTime: No; PrRO: No; Rght: rw-r--r--; PrR: No (No); FnCs: N; RIC: 0100; Resume: N (102400); CalcS: No; Mask:
. 2016-08-25 10:33:33.830 TM: B; ClAr: No; RemEOF: No; RemBOM: No; CPS: 0; NewerOnly: No; InclM: ; ResumeL: 0
. 2016-08-25 10:33:33.830 AscM: *.*html; *.htm; *.txt; *.php; *.php3; *.cgi; *.c; *.cpp; *.h; *.pas; *.bas; *.tex; *.pl; *.js; .htaccess; *.xtml; *.css; *.cfg; *.ini; *.sh; *.xml
. 2016-08-25 10:33:33.830 File: 'C:\Users\MeinUser\Downloads\Datei.xyz' [2016-08-25T08:33:31.943Z] [1457028]
. 2016-08-25 10:33:33.831 Copying "C:\Users\MeinUser\Downloads\Datei.xyz" to remote directory started.
. 2016-08-25 10:33:33.831 Binary transfer mode selected.
. 2016-08-25 10:33:33.831 Opening remote file.
> 2016-08-25 10:33:33.832 Type: SSH_FXP_OPEN, Size: 171, Number: 259
< 2016-08-25 10:33:33.847 Type: SSH_FXP_STATUS, Size: 29, Number: 259
< 2016-08-25 10:33:33.847 Status code: 2, Message: 259, Server: No such file, Language:
> 2016-08-25 10:33:33.847 Type: SSH_FXP_LSTAT, Size: 155, Number: 519
< 2016-08-25 10:33:33.862 Type: SSH_FXP_STATUS, Size: 29, Number: 519
< 2016-08-25 10:33:33.862 Status code: 2, Message: 519, Server: No such file, Language:
* 2016-08-25 10:33:33.862 (ETerminal) Datei oder Verzeichnis nicht gefunden.
* 2016-08-25 10:33:33.862 Fehlercode: 2
* 2016-08-25 10:33:33.862 Fehlernachricht vom Server : No such file
Ich hab schon versucht die Zieldatei mit an das Zielverzeichnis anzuhängen, den Pfad mit "/" am ende und ohne. Aber immer derselbe Fehler.
z.B.:
transferResult = session.PutFiles("C:\Users\MeinUser\Downloads\Datei.xyz", "/volume1/Verz1/Testfiles/Datei.xyz", True, transferOptions)
transferResult = session.PutFiles("C:\Users\MeinUser\Downloads\Datei.xyz", "/volume1/Verz1/Testfiles", True, transferOptions)
transferResult = session.PutFiles("C:\Users\MeinUser\Downloads\Datei.xyz", "/volume1/Verz1/Testfiles/", True, transferOptions)
transferResult = session.PutFiles("C:\Users\MeinUser\Downloads\*", "/volume1/Verz1/Testfiles/", True, transferOptions)
Hat jemand einen Hinweis oder eine Idee woran es liegen kann?
Gruß
Smurf