Sample code for 30+ languages & platforms
Visual Basic 6.0

Set an Environment Variable on an SSH Channel

See more SSH Examples

Demonstrates the Chilkat Ssh.SendReqSetEnv method, which asks the server to set an environment variable for a session channel. The arguments are the channel number, the variable name, and its value. Send these requests before the exec, shell, or subsystem request.

Background: This is the clean way to pass configuration to a remote command without embedding it in the command line. Be aware that many SSH servers restrict which variables clients may set (OpenSSH's AcceptEnv), so a request can be silently ignored or rejected — do not rely on it without verifying the server's policy.

Chilkat Visual Basic 6.0 Downloads

Visual Basic 6.0
Dim success As Long
success = 0

'  Demonstrates the Ssh.SendReqSetEnv method, which asks the server to set an environment
'  variable for a session channel.  The 1st argument is the channel number, the 2nd is the
'  variable name, and the 3rd is its value.  Send it before the exec, shell, or subsystem
'  request.

Dim ssh As New ChilkatSsh

Dim sshPort As Long
sshPort = 22
success = ssh.Connect("ssh.example.com",sshPort)
If (success = 0) Then
    Debug.Print ssh.LastErrorText
    Exit Sub
End If

'  Normally you would not hard-code the password in source.  You should instead obtain it
'  from an interactive prompt, environment variable, or a secrets vault.
Dim password As String
password = "mySshPassword"

success = ssh.AuthenticatePw("mySshLogin",password)
If (success = 0) Then
    Debug.Print ssh.LastErrorText
    Exit Sub
End If

'  Open a session channel.  A negative return value indicates failure.
Dim channelNum As Long
channelNum = ssh.OpenSessionChannel()
If (channelNum < 0) Then
    Debug.Print ssh.LastErrorText
    Exit Sub
End If

'  Set environment variables for the channel.  Multiple variables may be requested.
success = ssh.SendReqSetEnv(channelNum,"LANG","en_US.UTF-8")
If (success = 0) Then
    Debug.Print ssh.LastErrorText
    Exit Sub
End If

success = ssh.SendReqSetEnv(channelNum,"MY_APP_MODE","production")
If (success = 0) Then
    Debug.Print ssh.LastErrorText
    Exit Sub
End If

'  Now run the command, which sees the requested environment.
success = ssh.SendReqExec(channelNum,"echo $MY_APP_MODE")
If (success = 0) Then
    Debug.Print ssh.LastErrorText
    Exit Sub
End If

'  IMPORTANT: Set a read timeout.  ReadTimeoutMs defaults to 0, which means no limit -- without
'  it, this call waits forever if the server never sends channel close.
ssh.ReadTimeoutMs = 15000

success = ssh.ChannelReceiveToClose(channelNum)
If (success = 0) Then
    Debug.Print ssh.LastErrorText
    Exit Sub
End If

Dim output As String
output = ssh.GetReceivedText(channelNum,"utf-8")
If (ssh.LastMethodSuccess = 0) Then
    Debug.Print ssh.LastErrorText
    Exit Sub
End If

Debug.Print output

ssh.Disconnect