非常教程

Erlang 20参考手册

ssh

ssh_sftp

模块

ssh_sftp

模块摘要

SFTP客户端

描述

该模块实现SSH FTP(SFTP)客户端。SFTP是一种可用于SSH的安全,加密文件传输服务。

数据类型

在本模块中多次使用的类型定义,或用于指示数据类型的预期用途的抽象,或者两者都使用:

reason()

=atom()对操作失败原因的描述。

该值由draft-ietf-secsh-filexfer-13.txt9.1节中定义的协议级响应中的sftp错误代码形成。

这些代码被命名为SSH_FX_*被转换成星部的小写。例如错误代码SSH_FX_NO_SUCH_FILE将导致reason()成为no_such_file...

ssh_connection_ref() =

opaque() - 由 ssh:connect/3返回

timeout()

=infinity | integer()以毫秒为单位。默认无穷大

暂停

如果该请求用于SFTP通道返回{error, timeout},则在预期的时间内未收到来自服务器的应答。

请求可能已到达服务器并已执行。但是,没有在预期时间内从服务器收到任何答复。

输出

apread(ChannelPid, Handle, Position, Len) -> {async, N} | {error, reason()}

类型

apread/4函数从指定位置读取,组合函数position/3aread/3函数。

apwrite(ChannelPid, Handle, Position, Data) -> {async, N} | {error, reason()}

类型

apwrite/4函数写入指定位置,组合函数position/3awrite/3函数。

aread(ChannelPid, Handle, Len) -> {async, N} | {error, reason()}

类型

从一个打开的文件中读取,无需等待结果。 如果句柄有效,函数返回{async,N},其中N是在aread调用之间保证唯一的一个术语。 实际数据作为消息发送给调用进程。 此消息的格式为{async_reply,N,Result},其中Result是读取的结果,即{ok,Data},eof或{error,reason()}。

awrite(ChannelPid, Handle, Data) -> {async, N} | {error, reason()}

类型

写入一个打开的文件,无需等待结果。 如果句柄有效,则函数返回{async,N},其中N是保证在awrite调用之间唯一的项。 写入操作的结果作为消息发送给调用进程。 此消息的格式为{async_reply,N,Result},其中Result是写入的结果,或者是ok,或者是{error,reason()}。

close(ChannelPid, Handle) ->close(ChannelPid, Handle, Timeout) -> ok | {error, reason()}

类型

关闭服务器上打开的文件或目录的句柄。

delete(ChannelPid, Name) ->delete(ChannelPid, Name, Timeout) -> ok | {error, reason()}

类型

删除指定的文件Name

del_dir(ChannelPid, Name) ->del_dir(ChannelPid, Name, Timeout) -> ok | {error, reason()}

类型

删除指定的目录Name。在成功删除之前,该目录必须是空的。

list_dir(ChannelPid, Path) ->list_dir(ChannelPid, Path, Timeout) -> {ok, Filenames} | {error, reason()}

类型

列出服务器上的给定目录,将文件名作为字符串列表返回。

make_dir(ChannelPid, Name) ->make_dir(ChannelPid, Name, Timeout) -> ok | {error, reason()}

类型

创建由指定的目录NameName必须是新目录的完整路径。该目录只能在现有目录中创建。

make_symlink(ChannelPid, Name, Target) ->make_symlink(ChannelPid, Name, Target, Timeout) -> ok | {error, reason()}

类型

创建指向Target名字Name...

open(ChannelPid, File, Mode) ->open(ChannelPid, File, Mode, Timeout) -> {ok, Handle} | {error, reason()}

类型

在服务器上打开一个文件并返回一个句柄,该句柄可用于读写。

opendir(ChannelPid, Path) ->opendir(ChannelPid, Path, Timeout) -> {ok, Handle} | {error, reason()}

类型

打开服务器上某个目录的句柄。句柄可用于读取目录内容。

open_tar(ChannelPid, Path, Mode) ->open_tar(ChannelPid, Path, Mode, Timeout) -> {ok, Handle} | {error, reason()}

类型

打开服务器上关联的tar文件的句柄ChannelPid。按照该erl_tar:init/3功能的定义,手柄可用于远程焦油的创建和提取。

有关代码示例,请参阅SFTP Client with TAR Compression and Encryptionssh用户指南中的部分。

crypto模式选项应用于生成的字节流,然后将它们发送到SFTP服务器。这是用于加密,但可用于其他目的。

InitFun被施加一次之前的任何其他crypto操作。CryptoState然后将返回的信息折叠为EncryptFunor的重复应用DecryptFun。从这些funs返回的二进制文件被进一步发送到远程SFTP服务器。最后,如果进行加密,CloseFun则应用于最后一条数据。该CloseFun负责填充(如果需要)并加密该最后一块。

ChunkSize限定的尺寸PlainBin,且s EncodeFun施加到。如果ChunkSizeundefined,则PlainBins 的大小会有所不同,因为这是用于流加密,而固定ChunkSize用于块加密。ChunkSizes可以在从EncryptFunor 返回时改变DecryptFun。该值可以在pos_integer()和之间改变undefined

position(ChannelPid, Handle, Location) ->position(ChannelPid, Handle, Location, Timeout) -> {ok, NewPosition | {error, reason()}

类型

设置引用的文件的文件位置Handle{ok, NewPosition}如果成功则返回(作为绝对偏移量),否则返回{error, reason()}Location是以下之一:

Offset

{bof, Offset}...

{bof, Offset}

绝对偏移

{cur, Offset}

与当前职位相抵。

{eof, Offset}

从文件末尾偏移。

bof | cur | eof

Offset0 相同,即{bof, 0} | {cur, 0} | {eof, 0}

pread(ChannelPid, Handle, Position, Len) ->pread(ChannelPid, Handle, Position, Len, Timeout) -> {ok, Data} | eof | {error, reason()}

类型

pread/3,4函数从指定位置读取,组合函数position/3read/3,4函数。

pwrite(ChannelPid, Handle, Position, Data) -> okpwrite(ChannelPid, Handle, Position, Data, Timeout) -> ok | {error, reason()}

类型

pwrite/3,4函数写入指定位置,组合函数position/3write/3,4函数。

read(ChannelPid, Handle, Len) ->read(ChannelPid, Handle, Len, Timeout) -> {ok, Data} | eof | {error, reason()}

类型

Len从引用的文件中读取字节Handle。返回{ok, Data}eof{error, reason()}。如果打开文件binaryData是一个二进制文件,否则它是一个字符串。

如果文件被读取过去eof,只有剩余的字节被读取并返回。如果没有读取字节,eof则被返回。

read_file(ChannelPid, File) ->read_file(ChannelPid, File, Timeout) -> {ok, Data} | {error, reason()}

类型

从服务器读取文件,并以二进制形式返回数据。

read_file_info(ChannelPid, Name) ->read_file_info(ChannelPid, Name, Timeout) -> {ok, FileInfo} | {error, reason()}

类型

返回file_info指定的文件记录。NameHandle.见file:read_file_info/2有关记录的信息。

read_link(ChannelPid, Name) ->read_link(ChannelPid, Name, Timeout) -> {ok, Target} | {error, reason()}

类型

从指定的符号链接读取链接目标name

read_link_info(ChannelPid, Name) -> {ok, FileInfo} | {error, reason()}read_link_info(ChannelPid, Name, Timeout) -> {ok, FileInfo} | {error, reason()}

类型

file_infoNameor 指定的符号链接返回记录Handle。查看file:read_link_info/2有关记录的信息。

rename(ChannelPid, OldName, NewName) ->rename(ChannelPid, OldName, NewName, Timeout) -> ok | {error, reason()}

类型

重命名一个名为的文件OldName并为其命名NewName

start_channel(ConnectionRef) ->start_channel(ConnectionRef, Options) -> {ok, Pid} | {error, reason()|term()}start_channel(Host, Options) ->start_channel(Host, Port, Options) -> {ok, Pid, ConnectionRef} | {error, reason()|term()}start_channel(TcpSocket) ->start_channel(TcpSocket, Options) -> {ok, Pid, ConnectionRef} | {error, reason()|term()}

类型

 The socket is supposed to be from `gen_tcp:connect` or `gen_tcp:accept` with option `{active,false}` 

如果不提供连接引用,则设置连接,并返回新连接。启动SSH通道进程以处理与SFTP服务器的通信。回归pid因为此过程将用作本模块中所有其他API函数的输入。

备选方案:

{timeout, timeout()}

有两种方法可以为基础ssh连接设置超时:

  • 如果设置了连接超时选项connect_timeout,则该值也用于协商超时,并timeout忽略此选项()。
  • 否则,此选项(timeout)仅用作协商超时,并且没有设置连接超时

该值默认为infinity

{sftp_vsn, integer()}

所需的SFTP协议版本。实际版本是SFTP服务器所需版本和支持的最大版本的最小值。

所有其他选项直接传递给ssh:connect/3如果已经提供连接,则忽略。

stop_channel(ChannelPid) -> ok

类型

停止SFTP频道。不关闭SSH连接。使用ssh:close/1关闭它。

write(ChannelPid, Handle, Data) ->write(ChannelPid, Handle, Data, Timeout) -> ok | {error, reason()}

类型

将数据写入Handle引用的文件。 该文件将用写入或附加标志打开。 如果成功则返回ok,否则返回{error,reason()}。

write_file(ChannelPid, File, Iolist) ->write_file(ChannelPid, File, Iolist, Timeout) -> ok | {error, reason()}

类型

将文件写入服务器。如果该文件不存在,则会创建该文件,但如果该文件存在,则会被覆盖。

write_file_info(ChannelPid, Name, Info) ->write_file_info(ChannelPid, Name, Info, Timeout) -> ok | {error, reason()}

类型

将文件信息从file_info记录写入由Name指定的文件。 有关记录的信息,请参阅file:write_file_info / [2,3]。

Erlang 20

Erlang 是一种通用的面向并发的编程语言,可应付大规模开发活动的程序设计语言和运行环境。

主页 https://www.erlang.org/
源码 https://github.com/erlang/otp
版本 20
发布版本 20.1