Visual Basic 6.0
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
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