PureBasic
PureBasic
Setting Environment Variables for SCP Transfers
See more SCP Examples
Demonstrates how to set remote environment variables for an SCP transfer.Note 1: This example requires Chilkat v9.5.0.79 or greater.
Note 2: Setting environment variables for SCP is only supported by some SSH servers.
Chilkat PureBasic Downloads
IncludeFile "CkScp.pb"
IncludeFile "CkJsonObject.pb"
IncludeFile "CkSsh.pb"
Procedure ChilkatExample()
success.i = 0
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
ssh.i = CkSsh::ckCreate()
If ssh.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; First connect to an SSH server.
success = CkSsh::ckConnect(ssh,"example.com",22)
If success <> 1
Debug CkSsh::ckLastErrorText(ssh)
CkSsh::ckDispose(ssh)
ProcedureReturn
EndIf
; Wait a max of 5 seconds when reading responses..
CkSsh::setCkIdleTimeoutMs(ssh, 5000)
; Authenticate..
success = CkSsh::ckAuthenticatePw(ssh,"myLogin","myPassword")
If success <> 1
Debug CkSsh::ckLastErrorText(ssh)
CkSsh::ckDispose(ssh)
ProcedureReturn
EndIf
; After the SSH object is connected and authenticated, we use it
; as the underlying transport in our SCP object.
scp.i = CkScp::ckCreate()
If scp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkScp::ckUseSsh(scp,ssh)
If success <> 1
Debug CkScp::ckLastErrorText(scp)
CkSsh::ckDispose(ssh)
CkScp::ckDispose(scp)
ProcedureReturn
EndIf
; Specify the environment variables to be set in JSON as follows.
; This example sets two environment variables. One is named "LCS_PASSWORD" and the other "MY_TEST_NAME".
jsonEnvVars.i = CkJsonObject::ckCreate()
If jsonEnvVars.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::setCkEmitCompact(jsonEnvVars, 0)
CkJsonObject::ckUpdateString(jsonEnvVars,"LCS_PASSWORD","secret")
CkJsonObject::ckUpdateString(jsonEnvVars,"MY_TEST_NAME","abc")
strEnvVars.s = CkJsonObject::ckEmit(jsonEnvVars)
Debug strEnvVars
; Setting the SendEnv property causes Chilkat to set each environment variable on the SSH server
; prior to doing the upload or download.
CkScp::setCkSendEnv(scp, strEnvVars)
; Do the upload..
remotePath.s = "starfish.jpg"
localPath.s = "qa_data/jpg/starfish.jpg"
success = CkScp::ckUploadFile(scp,localPath,remotePath)
If success <> 1
Debug CkScp::ckLastErrorText(scp)
CkSsh::ckDispose(ssh)
CkScp::ckDispose(scp)
CkJsonObject::ckDispose(jsonEnvVars)
ProcedureReturn
EndIf
Debug "SCP upload file success."
; Disconnect
CkSsh::ckDisconnect(ssh)
CkSsh::ckDispose(ssh)
CkScp::ckDispose(scp)
CkJsonObject::ckDispose(jsonEnvVars)
ProcedureReturn
EndProcedure