This module provides an API to the ssh connection protocol. Not all features of the connection protocol are officially supported yet. Only the ones supported are documented here.
Type definitions that are used more than once in this module:
boolean() = true | false
string() = list of ASCII characters
ssh_connection_ref() - opaque to the user returned by ssh:connect/[1,2,3] or sent to a ssh channel processes
ssh_system_ref() - opaque to the user returned by ssh:daemon/[1,2,3]
As a result of the connection protocol the following messages may be sent to a channel process.
adjust_window(ConnectionRef, Channel, Bytes) -> ok
Types:
ConnectionRef = ssh_connection_ref()
ChannelId = integer()
Bytes = integer()
Adjusts the ssh flowcontrol window. Should be called after handling a {ssh_cm, ConnectionRef, {data, ChannelId, Type, Data}} message in the following way: ssh_connection:adjust_window(ConnectionRef, ChannelId, size(Data)),
close(ConnectionRef, ChannelId) -> ok
Types:
ConnectionRef = ssh_connection_ref()
ChannelId = integer()
Sends a close message on the channel ChannelId
exec(ConnectionRef, ChannelId, Command, TimeOut) -> success | failiure
Types:
ConnectionRef = ssh_connection_ref()
ChannelId = integer()
Command = string()
Timeout = infinity | integer()
Will request that the server start the execution of the given command. Result will be received as N x {ssh_cm, ConnectionRef, {data, ChannelId, Type, Data}} messages followed by {ssh_cm, ConnectionRef, {eof, ChannelId}} {ssh_cm, ConnectionRef, {exit_status, ChannelId, Status}}, {ssh_cm, ConnectionRef, {closed, ChannelId}}
reply_request(ConnectionRef, WantReply, Status, CannelId) -> ok
Types:
ConnectionRef = ssh_connection_ref()
WantReply = boolean()
Status = success | failure
ChannelId = integer()
Send status replies to requests that want such replies. Should be called after handling an ssh_cm-message containing a WantReply.
send(ConnectionRef, ChannelId, Data) ->
send(ConnectionRef, ChannelId, Data, Timeout) ->
send(ConnectionRef, ChannelId, Type, Data) ->
send(ConnectionRef, ChannelId, Type, Data, TimeOut) ->
ok | {error, timeout}
Types:
ConnectionRef = ssh_connection_ref()
ChannelId = integer()
Data = binary()
Type = 0 | 1 see RFC 4254
Timeout = infinity | integer()
Sends channel data.
send_eof(ConnectionRef, ChannelId) -> ok
Types:
ConnectionRef = ssh_connection_ref()
ChannelId = integer()
Sends eof on the channel ChannelId.
session_channel(ConnectionRef, Timeout) ->
session_channel(ConnectionRef, InitialWindowSize,
MaxPacketSize, Timeout) -> {ok, ChannleId} | {error, Reason}
Types:
ConnectionRef = ssh_connection_ref()
InitialWindowSize = integer()
MaxPacketSize = integer()
Timeout = infinity | integer()
Opens a channel for a ssh session. A session is a remote execution of a program. The program may be a shell, an application, a system command, or some built-in subsystem.
setenv(ConnectionRef, ChannelId, Var, Value, TimeOut) -> success | failure
Types:
ConnectionRef = ssh_connection_ref()
ChannelId = integer()
Var = string()
Value = string()
Timeout = infinity | integer()
Environment variables may be passed to the shell/command to be started later.
shell(ConnectionRef, ChannelId) -> success | failure
Types:
ConnectionRef = ssh_connection_ref()
ChannelId = integer()
Will request that the user's default shell (typically defined in /etc/passwd in UNIX systems) be started at the other end. Messages for the caller to handle:
subsystem(ConnectionRef, ChannelId, Subsystem, Timeout) -> success | failure
Types:
ConnectionRef = ssh_connection_ref()
ChannelId = integer()
Subsystem = string()
Timeout = infinity | integer()
Sends a request to execute a predefined subsystem