Visual Basic 6.0
Visual Basic 6.0
Get Text Received on an SSH Channel
See more SSH Examples
Demonstrates the Chilkat Ssh.GetReceivedText method, which decodes and returns all text currently accumulated in a channel's normal receive buffer. The first argument is the channel number and the second is the charset. The receive buffer is cleared after the text is returned.
Background: This is the retrieval half of the read-then-get pattern: a
Channel* read or receive call fills the buffer, and this hands you the text. Because the buffer is cleared on retrieval, each call returns only what arrived since the last one. A valid channel with nothing buffered returns an empty string successfully, so an empty result is not an error. Retrieve text promptly after a channel completes, before other SSH operations can discard the completed channel record.Chilkat Visual Basic 6.0 Downloads
Dim success As Long
success = 0
' Demonstrates the Ssh.GetReceivedText method, which decodes and returns all text currently in
' a channel's normal receive buffer. The 1st argument is the channel number and the 2nd is the
' charset. The receive buffer is cleared after the text is returned.
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
Dim channelNum As Long
channelNum = ssh.OpenSessionChannel()
If (channelNum < 0) Then
Debug.Print ssh.LastErrorText
Exit Sub
End If
success = ssh.SendReqExec(channelNum,"cat /etc/hostname")
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
' Retrieve the accumulated output. A valid channel with no buffered data returns an empty
' string successfully.
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