ssh_connection

Langue: en

Version: 164223 (fedora - 05/07/09)

Section: 3 (Bibliothèques de fonctions)

MODULE

SSH - This module provides an API to the ssh connection protocol.

DESCRIPTION

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.

COMMON DATA TYPES

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]

MESSAGES SENT TO CHANNEL PROCESSES

As a result of the connection protocol the following messages may be sent to a channel process.

{ssh_cm, ConnectionRef, {open, ChannelId, RemoteChannelId, {session}}}:
{ssh_cm, ConnectionRef, {subsystem, ChannelId, WantReply, Name}}:
{ssh_cm, ConnectionRef, {closed, ChannelId}}:
{ssh_cm, ConnectionRef, {data, ChannelId, Type, Data}}:
{ssh_cm, ConnectionRef, {eof, ChannelId}}:
{ssh_cm, ConnectionRef, {exit_signal, ChannelId, Signal, Err, Lang}} :
{ssh_cm, ConnectionRef, {exit_status, ChannelId, _Status}}:
{ssh_cm, ConnectionRef, {shell, WantReply}}:
{ssh_cm, ConnectionRef, {pty, ChannelId, WantReply, Pty}}:
{ssh_cm, ConnectionRef, {window_change, ChannelId, Width, Height, PixWidth, PixHeight}}:

EXPORTS

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