ct_ssh

SSH/SFTP client module.

SSH/SFTP client module.

ct_ssh uses the OTP ssh application and more detailed information about e.g. functions, types and options can be found in the documentation for this application.

The Server argument in the SFTP functions should only be used for SFTP sessions that have been started on existing SSH connections (i.e. when the original connection type is ssh). Whenever the connection type is sftp, use the SSH connection reference only.

The following options are valid for specifying an SSH/SFTP connection (i.e. may be used as config elements):

  
    [{ConnType, Addr},
     {port, Port},
     {user, UserName}
     {password, Pwd}
     {user_dir, String}
     {public_key_alg, PubKeyAlg}
     {connect_timeout, Timeout}
     {key_cb, KeyCallbackMod}]
   

ConnType = ssh | sftp.

Please see ssh(3) for other types.

All timeout parameters in ct_ssh functions are values in milliseconds.

Types


connection() = handle() | target_name() (see module ct)

handle() = handle() (see module ct_gen_conn)

ssh_sftp_return() = term()

Functions


connect(KeyOrName) -> {ok, Handle} | {error, Reason}

connect(KeyOrName, ConnType) -> {ok, Handle} | {error, Reason}

connect(KeyOrName, ConnType, ExtraOpts) -> {ok, Handle} | {error, Reason}

  • KeyOrName = Key | Name
  • Key = atom()
  • Name = target_name() (see module ct)
  • ConnType = ssh | sftp | host
  • ExtraOpts = ssh_connect_options()
  • Handle = handle()
  • Reason = term()

Open an SSH or SFTP connection using the information associated with KeyOrName.

If Name (an alias name for Key), is used to identify the connection, this name may be used as connection reference for subsequent calls. It's only possible to have one open connection at a time associated with Name. If Key is used, the returned handle must be used for subsequent calls (multiple connections may be opened using the config data specified by Key). See ct:require/2 for how to create a new Name

ConnType will always override the type specified in the address tuple in the configuration data (and in ExtraOpts). So it is possible to for example open an sftp connection directly using data originally specifying an ssh connection. The value host means the connection type specified by the host option (either in the configuration data or in ExtraOpts) will be used.

ExtraOpts (optional) are extra SSH options to be added to the config data for KeyOrName. The extra options will override any existing options with the same key in the config data. For details on valid SSH options, see the documentation for the OTP ssh application.

See also: ct:require/2.

disconnect(SSH) -> ok | {error, Reason}

  • SSH = connection()
  • Reason = term()

Close an SSH/SFTP connection.

session_open(SSH) -> {ok, ChannelId} | {error, Reason}

session_open(SSH, Timeout) -> {ok, ChannelId} | {error, Reason}

  • SSH = connection()
  • Timeout = integer()
  • ChannelId = integer()
  • Reason = term()

Opens a channel for an SSH session.

session_close(SSH, ChannelId) -> ok | {error, Reason}

  • SSH = connection()
  • ChannelId = integer()
  • Reason = term()

Closes an SSH session channel.

exec(SSH, Command) -> {ok, Data} | {error, Reason}

exec(SSH, Command, Timeout) -> {ok, Data} | {error, Reason}

  • SSH = connection()
  • Command = string()
  • Timeout = integer()
  • Data = list()
  • Reason = term()

Requests server to perform Command. A session channel is opened automatically for the request. Data is received from the server as a result of the command.

exec(SSH, ChannelId, Command, Timeout) -> {ok, Data} | {error, Reason}

  • SSH = connection()
  • ChannelId = integer()
  • Command = string()
  • Timeout = integer()
  • Data = list()
  • Reason = term()

Requests server to perform Command. A previously opened session channel is used for the request. Data is received from the server as a result of the command.

receive_response(SSH, ChannelId) -> {ok, Data} | {error, Reason}

receive_response(SSH, ChannelId, End) -> {ok, Data} | {error, Reason}

receive_response(SSH, ChannelId, End, Timeout) -> {ok, Data} | {timeout, Data} | {error, Reason}

  • SSH = connection()
  • ChannelId = integer()
  • End = Fun | close | timeout
  • Timeout = integer()
  • Data = list()
  • Reason = term()

Receives expected data from server on the specified session channel.

If End == close, data is returned to the caller when the channel is closed by the server. If a timeout occurs before this happens, the function returns {timeout,Data} (where Data is the data received so far). If End == timeout, a timeout is expected and {ok,Data} is returned both in the case of a timeout and when the channel is closed. If End is a fun, this fun will be called with one argument - the data value in a received ssh_cm message (see ssh_connection(3)). The fun should return true to end the receiving operation (and have the so far collected data returned), or false to wait for more data from the server. (Note that even if a fun is supplied, the function returns immediately if the server closes the channel).

send(SSH, ChannelId, Data) -> ok | {error, Reason}

send(SSH, ChannelId, Data, Timeout) -> ok | {error, Reason}

send(SSH, ChannelId, Type, Data, Timeout) -> ok | {error, Reason}

  • SSH = connection()
  • ChannelId = integer()
  • Type = integer()
  • Data = list()
  • Timeout = integer()
  • Reason = term()

Send data to server on specified session channel.

send_and_receive(SSH, ChannelId, Data) -> {ok, Data} | {error, Reason}

send_and_receive(SSH, ChannelId, Data, End) -> {ok, Data} | {error, Reason}

send_and_receive(SSH, ChannelId, Data, End, Timeout) -> {ok, Data} | {error, Reason}

send_and_receive(SSH, ChannelId, Type, Data, End, Timeout) -> {ok, Data} | {error, Reason}

  • SSH = connection()
  • ChannelId = integer()
  • Type = integer()
  • Data = list()
  • End = Fun | close | timeout
  • Timeout = integer()
  • Reason = term()

Send data to server on specified session channel and wait to receive the server response.

See receive_response/4 for details on the End argument.

subsystem(SSH, ChannelId, Subsystem) -> Status | {error, Reason}

subsystem(SSH, ChannelId, Subsystem, Timeout) -> Status | {error, Reason}

  • SSH = connection()
  • ChannelId = integer()
  • Subsystem = string()
  • Timeout = integer()
  • Status = success | failure
  • Reason = term()

Sends a request to execute a predefined subsystem.

sftp_connect(SSH) -> {ok, Server} | {error, Reason}

  • SSH = connection()
  • Server = pid()
  • Reason = term()

Starts an SFTP session on an already existing SSH connection. Server identifies the new session and must be specified whenever SFTP requests are to be sent.

read_file(SSH, File) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

read_file(SSH, Server, File) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

write_file(SSH, File, Iolist) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

write_file(SSH, Server, File, Iolist) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

list_dir(SSH, Path) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

list_dir(SSH, Server, Path) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

open(SSH, File, Mode) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

open(SSH, Server, File, Mode) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

opendir(SSH, Path) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

opendir(SSH, Server, Path) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

close(SSH, Handle) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

close(SSH, Server, Handle) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

read(SSH, Handle, Len) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

read(SSH, Server, Handle, Len) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

pread(SSH, Handle, Position, Length) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

pread(SSH, Server, Handle, Position, Length) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

aread(SSH, Handle, Len) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

aread(SSH, Server, Handle, Len) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

apread(SSH, Handle, Position, Length) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

apread(SSH, Server, Handle, Position, Length) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

write(SSH, Handle, Data) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

write(SSH, Server, Handle, Data) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

pwrite(SSH, Handle, Position, Data) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

pwrite(SSH, Server, Handle, Position, Data) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

awrite(SSH, Handle, Data) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

awrite(SSH, Server, Handle, Data) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

apwrite(SSH, Handle, Position, Data) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

apwrite(SSH, Server, Handle, Position, Data) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

position(SSH, Handle, Location) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

position(SSH, Server, Handle, Location) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

read_file_info(SSH, Name) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

read_file_info(SSH, Server, Name) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

get_file_info(SSH, Handle) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

get_file_info(SSH, Server, Handle) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

write_file_info(SSH, Name, Info) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

write_file_info(SSH, Server, Name, Info) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

read_link(SSH, Name) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

read_link(SSH, Server, Name) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

make_symlink(SSH, Name, Target) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

make_symlink(SSH, Server, Name, Target) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

rename(SSH, OldName, NewName) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

rename(SSH, Server, OldName, NewName) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

delete(SSH, Name) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

delete(SSH, Server, Name) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

make_dir(SSH, Name) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

make_dir(SSH, Server, Name) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

del_dir(SSH, Name) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).

del_dir(SSH, Server, Name) -> Result

  • SSH = connection()
  • Result = ssh_sftp_return() | {error, Reason}
  • Reason = term()

For info and other types, see ssh_sftp(3).