Written by

Project Manager & Head of Interoperability at Salutic Soluciones, S.L.
Question Kurro Lopez · Oct 30, 2018

FTP.Rename doesn't work in SFTP

Hi all,

I have a FTP.Inbounding service that read a file and move it to a other folder when it is processed. The problem is that is not working fine in SFTP server.

The code is coppied from How to - Customize Ensemble Settings article.

// begin customization code// get the Filename, attach the time stamp to it and move the file into the Archive directory// the Rename method below is using RNFR and RNTO FTP commands (RFC 959), effectively moving the file into the new directorySet tSource=pInput.Attributes("Filename")Set tArchive=..Adapter.CreateTimestamp(tSource,"%f_%Q")set fullPath =..RemoteArchivePath_"\"_tArchive $$$TRACE("Path for archive: "_fullPath)Set tSC=..Adapter.rename(tSource,fullPath,..Adapter.%serverPath)

It works if I'm using a simple FTP server, however if I use SFTP it doesn't work.

I'm been investigating (and debuging) the code and It uses the method EnsLib.FTP.CommonSSH.RenameSSH

Method RenameSSH(OldFilename As %String, NewFilePath As %String) As %Boolean [ Internal ]{   Set tNew=$S(NewFilePath["/":NewFilePath, 1:..%serverPath_NewFilePath)   Set tSC=..%sftpSession.Rename(..%serverPath_OldFilename, tNew), ..ReturnCode=0, ..ReturnMessage=""   If $$$ISERR(tSC) Set ..ReturnMessage="Error in SFTP Rename("_..%serverPath_OldFilename_","_tNew_") "_$$$StatusDisplayString(tSC) Quit 0   Quit 1}

the %sftpSession.Rename thow an error:

SFTP Error [80102003]: Permission Denied [80102003] at SFTP.cpp:439,0

My first attempt was to check the connection credentials to the SFTP, so using an FTP manager I connected with the same credentials and the renaming and moving the file has been done correctly, I do not understand the "permission denied" error message, thenfore it should be other thing.

Any one can throw light to this problem?

Best regards,

Francisco Lopez 

Comments

Sean Connelly · Oct 30, 2018

Hi Francisco,

At a guess, I would say your FTP user account doesn't have permission to write into the archive path.

0
Kurro Lopez  Oct 30, 2018 to Sean Connelly

Yes, the account has permission to write and delete. Also to create and remove folders.

0
Sean Connelly  Oct 30, 2018 to Sean Connelly

I just re-read and see you have tried from a different client, maybe Ensemble is losing the connection, I will have a look around the code.

0
Sean Connelly · Oct 30, 2018

A couple of thoughts, as you have a backslash in the path, the new file path is going to be a concat of ..Adapter.%serverPath and NewFilePath, I would log this and not just the fullPath so you can be sure what directory you are trying to write to...

$$$TRACE("Path for archive: "_..Adapter.%serverPath_NewFilePath)

Also, might just be worth checking that you are connected when you do the rename

$$$TRACE("Connected: ",..Adapter.Connected)
0