PureBasic
PureBasic
SFTP Get/Set File Permission
See more SFTP Examples
Demonstrates how to set the permissions of a file on the SFTP server.Chilkat PureBasic Downloads
IncludeFile "CkSFtp.pb"
Procedure ChilkatExample()
success.i = 0
; This example assumes the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
sftp.i = CkSFtp::ckCreate()
If sftp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Connect to the SSH/SFTP server.
hostname.s = "sftp.example.com"
port.i = 22
success = CkSFtp::ckConnect(sftp,hostname,port)
If success <> 1
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
ProcedureReturn
EndIf
; Authenticate with the SSH server. Chilkat SFTP supports
; both password-based authenication as well as public-key
; authentication. This example uses password authenication.
success = CkSFtp::ckAuthenticatePw(sftp,"myLogin","myPassword")
If success <> 1
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
ProcedureReturn
EndIf
; After authenticating, the SFTP subsystem must be initialized:
success = CkSFtp::ckInitializeSftp(sftp)
If success <> 1
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
ProcedureReturn
EndIf
; Get the file permissions for the "hamlet.xml" file on the server.
; The hamlet.xml file is located in the qa_data directory found under the HOME directory of the SSH user account.
; We are passing the remote file path (we are not passing a file handle returned by a previous call to OpenFile).
isHandle.i = 0
followLinks.i = 1
permVal.i = CkSFtp::ckGetFilePermissions(sftp,"qa_data/hamlet.xml",followLinks,isHandle)
If permVal < 0
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
ProcedureReturn
EndIf
; Note: Filesystem permissions on Linux/Unix/MacOSX are typically written in octal (POSIX file permissions). For example 0644 is octal.
; To convert to decimal: octal 644 = 6*8^2 + 4*8 + 4 = 420 (decimal)
;
; The server may return a permissions value (in octal) such as 100644.
; The "100" indicates the file type, such as regular file or directory.
; Show the decimal value of the permissions
Debug "decimal permissions value: " + Str(permVal)
; To set the file permissions, pass the integer value.
; Let's change the permissions to 0664, which is 6*8^2 + 6*8 + 4 = 436 (decimal)
success = CkSFtp::ckSetPermissions(sftp,"qa_data/hamlet.xml",isHandle,436)
If success <> 1
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
ProcedureReturn
EndIf
Debug "Success."
CkSFtp::ckDispose(sftp)
ProcedureReturn
EndProcedure