Tcl
Tcl
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 Tcl Downloads
load ./chilkat.dll
set success 0
# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
set ssh [new_CkSsh]
# First connect to an SSH server.
set success [CkSsh_Connect $ssh "example.com" 22]
if {$success != 1} then {
puts [CkSsh_lastErrorText $ssh]
delete_CkSsh $ssh
exit
}
# Wait a max of 5 seconds when reading responses..
CkSsh_put_IdleTimeoutMs $ssh 5000
# Authenticate..
set success [CkSsh_AuthenticatePw $ssh "myLogin" "myPassword"]
if {$success != 1} then {
puts [CkSsh_lastErrorText $ssh]
delete_CkSsh $ssh
exit
}
# After the SSH object is connected and authenticated, we use it
# as the underlying transport in our SCP object.
set scp [new_CkScp]
set success [CkScp_UseSsh $scp $ssh]
if {$success != 1} then {
puts [CkScp_lastErrorText $scp]
delete_CkSsh $ssh
delete_CkScp $scp
exit
}
# 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".
set jsonEnvVars [new_CkJsonObject]
CkJsonObject_put_EmitCompact $jsonEnvVars 0
CkJsonObject_UpdateString $jsonEnvVars "LCS_PASSWORD" "secret"
CkJsonObject_UpdateString $jsonEnvVars "MY_TEST_NAME" "abc"
set strEnvVars [CkJsonObject_emit $jsonEnvVars]
puts "$strEnvVars"
# Setting the SendEnv property causes Chilkat to set each environment variable on the SSH server
# prior to doing the upload or download.
CkScp_put_SendEnv $scp $strEnvVars
# Do the upload..
set remotePath "starfish.jpg"
set localPath "qa_data/jpg/starfish.jpg"
set success [CkScp_UploadFile $scp $localPath $remotePath]
if {$success != 1} then {
puts [CkScp_lastErrorText $scp]
delete_CkSsh $ssh
delete_CkScp $scp
delete_CkJsonObject $jsonEnvVars
exit
}
puts "SCP upload file success."
# Disconnect
CkSsh_Disconnect $ssh
delete_CkSsh $ssh
delete_CkScp $scp
delete_CkJsonObject $jsonEnvVars