Tcl
Tcl
Open a Custom SSH Channel Type
See more SSH Examples
Demonstrates the Chilkat Ssh.OpenCustomChannel method, which requests a channel whose application-defined type is supplied as the only argument. It returns the channel number, or -1 if the server rejects the channel. The server must implement that channel type.
Background: The SSH protocol allows vendor- and application-specific channel types beyond the standard
session and direct-tcpip kinds; by convention these carry an @domain suffix to avoid name collisions. This method is the escape hatch for talking to a server that implements such a type. On rejection, inspect ChannelOpenFailCode to learn why.Chilkat Tcl Downloads
load ./chilkat.dll
set success 0
# Demonstrates the Ssh.OpenCustomChannel method, which requests a custom SSH channel whose
# application-defined type is supplied as the only argument. It returns the channel number,
# or -1 if the server rejects the channel. The server must implement that channel type.
set ssh [new_CkSsh]
set sshPort 22
set success [CkSsh_Connect $ssh "ssh.example.com" $sshPort]
if {$success == 0} then {
puts [CkSsh_lastErrorText $ssh]
delete_CkSsh $ssh
exit
}
# 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.
set password "mySshPassword"
set success [CkSsh_AuthenticatePw $ssh "mySshLogin" $password]
if {$success == 0} then {
puts [CkSsh_lastErrorText $ssh]
delete_CkSsh $ssh
exit
}
# Request an application-defined channel type. The server must support it.
set channelType "my-custom-channel@example.com"
set channelNum [CkSsh_OpenCustomChannel $ssh $channelType]
if {$channelNum < 0} then {
puts [CkSsh_lastErrorText $ssh]
delete_CkSsh $ssh
exit
}
puts "Opened custom channel: $channelNum"
# The channel is used with the normal channel send, receive, EOF, CLOSE, and release methods.
CkSsh_Disconnect $ssh
delete_CkSsh $ssh