檢視原始碼 ssh_sftp (ssh v5.2.5)

SFTP 客戶端。

此模組實作 SSH FTP (SFTP) 客戶端。SFTP 是一種安全的加密檔案傳輸服務,可用於 SSH。

摘要

類型:Crypto open_tar

init_fun/0 返回的初始 crypto_state/0 會在 tar_crypto_spec 中重複應用 crypto_fun/0 時被摺疊。從該函式返回的二進制數據會被發送到遠端 SFTP 伺服器,而新的 crypto_state/0 會在下次呼叫 crypto_fun/0 時使用。

tar_crypto_spec 中的 init_fun/0 會在任何其他 crypto 操作之前應用一次。其目的是讓此函式啟動加密或解密,例如透過呼叫 crypto:crypto_init/4 或類似的函式。crypto_state/0 是此類函式可能返回的狀態。

指定在使用 open_tar/3open_tar/4 時應用於 tar 檔案的加密或解密。

如果正在進行加密,則 tar_crypto_spec 中的 final_fun/0 會應用於最後一塊數據。final_fun/0 負責填充(如果需要)和加密最後一塊數據。

類型

操作失敗原因的描述。

函式

apread/4 函式從指定的位置讀取,結合了 position/3aread/3 函式。

apwrite/4 函式寫入到指定的位置,結合了 position/3awrite/3 函式。

從開啟的檔案讀取,而不等待結果。如果句柄有效,則該函式會返回 {async, N},其中 N 是一個在 aread 呼叫之間保證唯一的術語。實際數據會以訊息的形式發送給呼叫程序。此訊息的形式為 {async_reply, N, Result},其中 Result 是讀取結果,可以是 {ok, Data}eof{error, reason()}

寫入到開啟的檔案,而不等待結果。如果句柄有效,則該函式會返回 {async, N},其中 N 是一個在 awrite 呼叫之間保證唯一的術語。write 操作的結果會以訊息的形式發送給呼叫程序。此訊息的形式為 {async_reply, N, Result},其中 Result 是寫入結果,可以是 ok{error, reason()}

關閉伺服器上開啟的檔案或目錄的句柄。

刪除由 Name 指定的目錄。目錄必須為空才能成功刪除。

刪除由 Name 指定的檔案。

列出伺服器上指定的目錄,並以字串列表的形式返回檔案名稱。

建立由 Name 指定的目錄。Name 必須是新目錄的完整路徑。該目錄只能在現有目錄中建立。

建立一個指向 Target 的符號連結,名稱為 Name

開啟伺服器上的檔案,並返回一個可用於讀取或寫入的句柄。

開啟伺服器上 tar 檔案的句柄,並與 ChannelPid 關聯。該句柄可用於遠端 tar 建立和提取。實際的寫入和讀取由呼叫 erl_tar:add/3,4erl_tar:extract/2 執行。注意:不應呼叫 erl_tar:init/3 函式,它由這個 open_tar 函式呼叫。

開啟伺服器上目錄的句柄。該句柄可用於讀取目錄內容。

設定 Handle 引用的檔案的檔案位置。如果成功,則返回 {ok, NewPosition} (作為絕對偏移量),否則返回 {error, reason()}Location 是以下其中之一

pread/3,4 函式從指定的位置讀取,結合了 position/3read/3,4 函式。

pwrite/3,4 函式寫入到指定的位置,結合了 position/3write/3,4 函式。

Handle 引用的檔案讀取 Len 個位元組。返回 {ok, Data}eof{error, reason()}。如果檔案以 binary 開啟,則 Data 為二進制數據,否則為字串。

從伺服器讀取檔案,並以二進制形式返回數據。

從由 NameHandle 指定的檔案系統物件返回 file_info 記錄。請參閱 file:read_file_info/2 以取得有關記錄的資訊。

從由 name 指定的符號連結讀取連結目標。

從由 NameHandle 指定的符號連結返回 file_info 記錄。請參閱 file:read_link_info/2 以取得有關記錄的資訊。

重新命名名為 OldName 的檔案,並將其命名為 NewName

start_channel(Host, Port, Options) ->

停止 SFTP 通道。不會關閉 SSH 連線。使用 ssh:close/1 關閉它。

data 寫入由 Handle 引用的檔案。該檔案必須以 writeappend 標誌開啟。如果成功則返回 ok,否則返回 {error, reason()}

將檔案寫入伺服器。如果檔案不存在,則會建立該檔案;如果檔案存在,則會覆寫該檔案。

file_info 記錄中的檔案資訊寫入由 Name 指定的檔案。請參閱 file:write_file_info/2,3 以取得有關記錄的資訊。

類型:Crypto open_tar

-type chunk_size() :: undefined | pos_integer().
-type crypto_fun() :: fun((TextIn :: binary(), crypto_state()) -> crypto_result()).
-type crypto_result() ::
          {ok, TextOut :: binary(), crypto_state()} |
          {ok, TextOut :: binary(), crypto_state(), chunk_size()}.

init_fun/0 返回的初始 crypto_state/0 會在 tar_crypto_spec 中重複應用 crypto_fun/0 時被摺疊。從該函式返回的二進制數據會被發送到遠端 SFTP 伺服器,而新的 crypto_state/0 會在下次呼叫 crypto_fun/0 時使用。

如果 crypto_fun/0 返回 chunk_size/0,則該值為呼叫 crypto_fun/0 中進一步區塊的區塊大小。

-type crypto_state() :: any().

tar_crypto_spec 中的 init_fun/0 會在任何其他 crypto 操作之前應用一次。其目的是讓此函式啟動加密或解密,例如透過呼叫 crypto:crypto_init/4 或類似的函式。crypto_state/0 是此類函式可能返回的狀態。

如果選定的密碼需要將輸入資料分割成特定大小的區塊,則 init_fun/0 應回傳第二種形式的回傳值,並將 chunk_size/0 設定為區塊大小。如果 chunk_size/0undefined,則 PlainBin 的大小會有所不同,因為這是用於串流加密,而固定的 chunk_size/0 則用於區塊加密。 chunk_size/0 的值可以在 crypto_fun/0 的回傳值中變更。該值可以在 pos_integer/0undefined 之間變更。

-type decrypt_spec() :: {init_fun(), crypto_fun()}.

指定在使用 open_tar/3open_tar/4 時應用於 tar 檔案的加密或解密。

加密或解密會應用於產生的位元組串流,然後才將產生的串流傳送至 SFTP 伺服器。

程式碼範例請參閱 ssh 使用者指南中的「加密範例」章節。

-type encrypt_spec() :: {init_fun(), crypto_fun(), final_fun()}.
-type final_fun() :: fun((FinalTextIn :: binary(), crypto_state()) -> {ok, FinalTextOut :: binary()}).

如果正在進行加密,則 tar_crypto_spec 中的 final_fun/0 會應用於最後一塊數據。final_fun/0 負責填充(如果需要)和加密最後一塊數據。

-type init_fun() :: fun(() -> {ok, crypto_state()}) | fun(() -> {ok, crypto_state(), chunk_size()}).
-type tar_crypto_spec() :: encrypt_spec() | decrypt_spec().

類型

-type reason() :: atom() | string() | tuple().

操作失敗原因的描述。

atom/0 值是根據協定層級回應中的 sftp 錯誤碼所組成,如 draft-ietf-secsh-filexfer-13 第 9.1 節中所定義。這些代碼的名稱為 SSH_FX_*,會轉換為星號部分的小寫。例如,錯誤碼 SSH_FX_NO_SUCH_FILE 會使 reason/0no_such_file

string/0 原因是在發生退出訊號時,來自伺服器的錯誤資訊。如果該資訊為空,則原因為退出訊號名稱。

tuple/0 原因為其他錯誤,例如 {exit_status,1}

-type sftp_option() ::
          {timeout, timeout()} |
          {sftp_vsn, pos_integer()} |
          {window_size, pos_integer()} |
          {packet_size, pos_integer()}.

函式

連結至此函式

apread(ChannelPid, Handle, Position, Len)

檢視原始碼
-spec apread(ChannelPid, Handle, Position, Len) -> {async, N} | Error
                when
                    ChannelPid :: pid(),
                    Handle :: term(),
                    Position :: integer(),
                    Len :: integer(),
                    Error :: {error, reason()},
                    N :: term().

apread/4 函式從指定的位置讀取,結合了 position/3aread/3 函式。

連結至此函式

apwrite(ChannelPid, Handle, Position, Data)

檢視原始碼
-spec apwrite(ChannelPid, Handle, Position, Data) -> {async, N} | Error
                 when
                     ChannelPid :: pid(),
                     Handle :: term(),
                     Position :: integer(),
                     Data :: binary(),
                     Error :: {error, reason()},
                     N :: term().

apwrite/4 函式寫入到指定的位置,結合了 position/3awrite/3 函式。

連結至此函式

aread(ChannelPid, Handle, Len)

檢視原始碼
-spec aread(ChannelPid, Handle, Len) -> {async, N} | Error
               when
                   ChannelPid :: pid(),
                   Handle :: term(),
                   Len :: integer(),
                   Error :: {error, reason()},
                   N :: term().

從開啟的檔案讀取,而不等待結果。如果句柄有效,則該函式會返回 {async, N},其中 N 是一個在 aread 呼叫之間保證唯一的術語。實際數據會以訊息的形式發送給呼叫程序。此訊息的形式為 {async_reply, N, Result},其中 Result 是讀取結果,可以是 {ok, Data}eof{error, reason()}

連結至此函式

awrite(ChannelPid, Handle, Data)

檢視原始碼
-spec awrite(ChannelPid, Handle, Data) -> {async, N} | Error
                when
                    ChannelPid :: pid(),
                    Handle :: term(),
                    Data :: binary(),
                    Error :: {error, reason()},
                    N :: term().

寫入到開啟的檔案,而不等待結果。如果句柄有效,則該函式會返回 {async, N},其中 N 是一個在 awrite 呼叫之間保證唯一的術語。write 操作的結果會以訊息的形式發送給呼叫程序。此訊息的形式為 {async_reply, N, Result},其中 Result 是寫入結果,可以是 ok{error, reason()}

連結至此函式

close(ChannelPid, Handle)

檢視原始碼
-spec close(ChannelPid, Handle) -> ok | Error
               when ChannelPid :: pid(), Handle :: term(), Error :: {error, reason()}.

等同於 close/3

連結至此函式

close(ChannelPid, Handle, Timeout)

檢視原始碼
-spec close(ChannelPid, Handle, Timeout) -> ok | Error
               when
                   ChannelPid :: pid(),
                   Handle :: term(),
                   Timeout :: timeout(),
                   Error :: {error, reason()}.

關閉伺服器上開啟的檔案或目錄的句柄。

連結至此函式

del_dir(ChannelPid, Name)

檢視原始碼
-spec del_dir(ChannelPid, Name) -> ok | Error
                 when ChannelPid :: pid(), Name :: string(), Error :: {error, reason()}.

等同於 del_dir/3

連結至此函式

del_dir(ChannelPid, Name, Timeout)

檢視原始碼
-spec del_dir(ChannelPid, Name, Timeout) -> ok | Error
                 when
                     ChannelPid :: pid(),
                     Name :: string(),
                     Timeout :: timeout(),
                     Error :: {error, reason()}.

刪除由 Name 指定的目錄。目錄必須為空才能成功刪除。

連結至此函式

delete(ChannelPid, Name)

檢視原始碼
-spec delete(ChannelPid, Name) -> ok | Error
                when ChannelPid :: pid(), Name :: string(), Error :: {error, reason()}.

等同於 delete/3

連結至此函式

delete(ChannelPid, Name, Timeout)

檢視原始碼
-spec delete(ChannelPid, Name, Timeout) -> ok | Error
                when
                    ChannelPid :: pid(),
                    Name :: string(),
                    Timeout :: timeout(),
                    Error :: {error, reason()}.

刪除由 Name 指定的檔案。

連結至此函式

list_dir(ChannelPid, Path)

檢視原始碼
-spec list_dir(ChannelPid, Path) -> {ok, FileNames} | Error
                  when
                      ChannelPid :: pid(),
                      Path :: string(),
                      FileNames :: [FileName],
                      FileName :: string(),
                      Error :: {error, reason()}.

等同於 list_dir/3

連結至此函式

list_dir(ChannelPid, Path, Timeout)

檢視原始碼
-spec list_dir(ChannelPid, Path, Timeout) -> {ok, FileNames} | Error
                  when
                      ChannelPid :: pid(),
                      Path :: string(),
                      Timeout :: timeout(),
                      FileNames :: [FileName],
                      FileName :: string(),
                      Error :: {error, reason()}.

列出伺服器上指定的目錄,並以字串列表的形式返回檔案名稱。

連結至此函式

make_dir(ChannelPid, Name)

檢視原始碼
-spec make_dir(ChannelPid, Name) -> ok | Error
                  when ChannelPid :: pid(), Name :: string(), Error :: {error, reason()}.

等同於 make_dir/3

連結至此函式

make_dir(ChannelPid, Name, Timeout)

檢視原始碼
-spec make_dir(ChannelPid, Name, Timeout) -> ok | Error
                  when
                      ChannelPid :: pid(),
                      Name :: string(),
                      Timeout :: timeout(),
                      Error :: {error, reason()}.

建立由 Name 指定的目錄。Name 必須是新目錄的完整路徑。該目錄只能在現有目錄中建立。

連結至此函式

make_symlink(ChannelPid, Name, Target)

檢視原始碼
-spec make_symlink(ChannelPid, Name, Target) -> ok | Error
                      when
                          ChannelPid :: pid(),
                          Name :: string(),
                          Target :: string(),
                          Error :: {error, reason()}.

等同於 make_symlink/4

連結至此函式

make_symlink(ChannelPid, Name, Target, Timeout)

檢視原始碼
-spec make_symlink(ChannelPid, Name, Target, Timeout) -> ok | Error
                      when
                          ChannelPid :: pid(),
                          Name :: string(),
                          Target :: string(),
                          Timeout :: timeout(),
                          Error :: {error, reason()}.

建立一個指向 Target 的符號連結,名稱為 Name

連結至此函式

open(ChannelPid, Name, Mode)

檢視原始碼
-spec open(ChannelPid, Name, Mode) -> {ok, Handle} | Error
              when
                  ChannelPid :: pid(),
                  Name :: string(),
                  Mode :: [read | write | append | binary | raw],
                  Handle :: term(),
                  Error :: {error, reason()}.

等同於 open/4

連結至此函式

open(ChannelPid, Name, Mode, Timeout)

檢視原始碼
-spec open(ChannelPid, Name, Mode, Timeout) -> {ok, Handle} | Error
              when
                  ChannelPid :: pid(),
                  Name :: string(),
                  Mode :: [read | write | append | binary | raw],
                  Timeout :: timeout(),
                  Handle :: term(),
                  Error :: {error, reason()}.

開啟伺服器上的檔案,並返回一個可用於讀取或寫入的句柄。

連結至此函式

open_tar(ChannelPid, Path, Mode)

檢視原始碼 (自 OTP 17.4 起)
-spec open_tar(ChannelPid, Path, Mode) -> {ok, Handle} | Error
                  when
                      ChannelPid :: pid(),
                      Path :: string(),
                      Mode :: [read | write | {crypto, tar_crypto_spec()}],
                      Handle :: term(),
                      Error :: {error, reason()}.

等同於 open_tar/4

連結至此函式

open_tar(ChannelPid, Path, Mode, Timeout)

檢視原始碼 (自 OTP 17.4 起)
-spec open_tar(ChannelPid, Path, Mode, Timeout) -> {ok, Handle} | Error
                  when
                      ChannelPid :: pid(),
                      Path :: string(),
                      Mode :: [read | write | {crypto, tar_crypto_spec()}],
                      Timeout :: timeout(),
                      Handle :: term(),
                      Error :: {error, reason()}.

開啟伺服器上 tar 檔案的句柄,並與 ChannelPid 關聯。該句柄可用於遠端 tar 建立和提取。實際的寫入和讀取由呼叫 erl_tar:add/3,4erl_tar:extract/2 執行。注意:不應呼叫 erl_tar:init/3 函式,它由這個 open_tar 函式呼叫。

程式碼範例請參閱 ssh 使用者指南中的「使用 TAR 壓縮的 SFTP 用戶端」章節。

crypto 模式選項在上面的資料類型章節中有說明,請參閱 open_tar 的加密運算。如果 Mode 包含 write,則假設為加密;如果 Mode 包含 read,則假設為解密。

連結至此函式

opendir(ChannelPid, Path)

檢視原始碼
-spec opendir(ChannelPid, Path) -> {ok, Handle} | Error
                 when
                     ChannelPid :: pid(), Path :: string(), Handle :: term(), Error :: {error, reason()}.

等同於 opendir/3

連結至此函式

opendir(ChannelPid, Path, Timeout)

檢視原始碼
-spec opendir(ChannelPid, Path, Timeout) -> {ok, Handle} | Error
                 when
                     ChannelPid :: pid(),
                     Path :: string(),
                     Timeout :: timeout(),
                     Handle :: term(),
                     Error :: {error, reason()}.

開啟伺服器上目錄的句柄。該句柄可用於讀取目錄內容。

連結至此函式

position(ChannelPid, Handle, Location)

檢視原始碼
-spec position(ChannelPid, Handle, Location) -> {ok, NewPosition} | Error
                  when
                      ChannelPid :: pid(),
                      Handle :: term(),
                      Location ::
                          Offset | {bof, Offset} | {cur, Offset} | {eof, Offset} | bof | cur | eof,
                      Offset :: integer(),
                      NewPosition :: integer(),
                      Error :: {error, reason()}.

等同於 position/4

連結至此函式

position(ChannelPid, Handle, Location, Timeout)

檢視原始碼
-spec position(ChannelPid, Handle, Location, Timeout) -> {ok, NewPosition} | Error
                  when
                      ChannelPid :: pid(),
                      Handle :: term(),
                      Location ::
                          Offset | {bof, Offset} | {cur, Offset} | {eof, Offset} | bof | cur | eof,
                      Timeout :: timeout(),
                      Offset :: integer(),
                      NewPosition :: integer(),
                      Error :: {error, reason()}.

設定 Handle 引用的檔案的檔案位置。如果成功,則返回 {ok, NewPosition} (作為絕對偏移量),否則返回 {error, reason()}Location 是以下其中之一

  • Offset - 與 {bof, Offset} 相同。

  • {bof, Offset} - 絕對偏移。

  • {cur, Offset} - 從目前位置的偏移。

  • {eof, Offset} - 從檔案結尾的偏移。

  • bof | cur | eof - 與前面相同,但 Offset 為 0,即 {bof, 0} | {cur, 0} | {eof, 0}

連結至此函式

pread(ChannelPid, Handle, Position, Len)

檢視原始碼
-spec pread(ChannelPid, Handle, Position, Len) -> {ok, Data} | eof | Error
               when
                   ChannelPid :: pid(),
                   Handle :: term(),
                   Position :: integer(),
                   Len :: integer(),
                   Data :: string() | binary(),
                   Error :: {error, reason()}.

等同於 pread/5

連結至此函式

pread(ChannelPid, Handle, Position, Len, Timeout)

檢視原始碼
-spec pread(ChannelPid, Handle, Position, Len, Timeout) -> {ok, Data} | eof | Error
               when
                   ChannelPid :: pid(),
                   Handle :: term(),
                   Position :: integer(),
                   Len :: integer(),
                   Timeout :: timeout(),
                   Data :: string() | binary(),
                   Error :: {error, reason()}.

pread/3,4 函式從指定的位置讀取,結合了 position/3read/3,4 函式。

連結至此函式

pwrite(ChannelPid, Handle, Position, Data)

檢視原始碼
-spec pwrite(ChannelPid, Handle, Position, Data) -> ok | Error
                when
                    ChannelPid :: pid(),
                    Handle :: term(),
                    Position :: integer(),
                    Data :: iolist(),
                    Error :: {error, reason()}.

等同於 pwrite/5

連結至此函式

pwrite(ChannelPid, Handle, Position, Data, Timeout)

檢視原始碼
-spec pwrite(ChannelPid, Handle, Position, Data, Timeout) -> ok | Error
                when
                    ChannelPid :: pid(),
                    Handle :: term(),
                    Position :: integer(),
                    Data :: iolist(),
                    Timeout :: timeout(),
                    Error :: {error, reason()}.

pwrite/3,4 函式寫入到指定的位置,結合了 position/3write/3,4 函式。

連結至此函式

read(ChannelPid, Handle, Len)

檢視原始碼
-spec read(ChannelPid, Handle, Len) -> {ok, Data} | eof | Error
              when
                  ChannelPid :: pid(),
                  Handle :: term(),
                  Len :: integer(),
                  Data :: string() | binary(),
                  Error :: {error, reason()}.

等同於 read/4

連結至此函式

read(ChannelPid, Handle, Len, Timeout)

檢視原始碼
-spec read(ChannelPid, Handle, Len, Timeout) -> {ok, Data} | eof | Error
              when
                  ChannelPid :: pid(),
                  Handle :: term(),
                  Len :: integer(),
                  Timeout :: timeout(),
                  Data :: string() | binary(),
                  Error :: {error, reason()}.

Handle 引用的檔案讀取 Len 個位元組。返回 {ok, Data}eof{error, reason()}。如果檔案以 binary 開啟,則 Data 為二進制數據,否則為字串。

如果讀取檔案超過 eof,則只會讀取並回傳剩餘的位元組。如果沒有讀取任何位元組,則會回傳 eof

連結至此函式

read_file(ChannelPid, File)

檢視原始碼
-spec read_file(ChannelPid, File) -> {ok, Data} | Error
                   when
                       ChannelPid :: pid(),
                       File :: string(),
                       Data :: binary(),
                       Error :: {error, reason()}.

等同於 read_file/3

連結至此函式

read_file(ChannelPid, File, Timeout)

檢視原始碼
-spec read_file(ChannelPid, File, Timeout) -> {ok, Data} | Error
                   when
                       ChannelPid :: pid(),
                       File :: string(),
                       Data :: binary(),
                       Timeout :: timeout(),
                       Error :: {error, reason()}.

從伺服器讀取檔案,並以二進制形式返回數據。

連結至此函式

read_file_info(ChannelPid, Name)

檢視原始碼
-spec read_file_info(ChannelPid, Name) -> {ok, FileInfo} | Error
                        when
                            ChannelPid :: pid(),
                            Name :: string(),
                            FileInfo :: file:file_info(),
                            Error :: {error, reason()}.

等同於 read_file_info/3

連結至此函式

read_file_info(ChannelPid, Name, Timeout)

檢視原始碼
-spec read_file_info(ChannelPid, Name, Timeout) -> {ok, FileInfo} | Error
                        when
                            ChannelPid :: pid(),
                            Name :: string(),
                            Timeout :: timeout(),
                            FileInfo :: file:file_info(),
                            Error :: {error, reason()}.

從由 NameHandle 指定的檔案系統物件返回 file_info 記錄。請參閱 file:read_file_info/2 以取得有關記錄的資訊。

根據底層作業系統的不同:可能會追蹤連結,並回傳最終檔案、目錄等的資訊。請參閱 read_link_info/2 以取得有關連結的資訊。

連結至此函式

read_link(ChannelPid, Name)

檢視原始碼
-spec read_link(ChannelPid, Name) -> {ok, Target} | Error
                   when
                       ChannelPid :: pid(),
                       Name :: string(),
                       Target :: string(),
                       Error :: {error, reason()}.

等同於 read_link/3

連結至此函式

read_link(ChannelPid, Name, Timeout)

檢視原始碼
-spec read_link(ChannelPid, Name, Timeout) -> {ok, Target} | Error
                   when
                       ChannelPid :: pid(),
                       Name :: string(),
                       Target :: string(),
                       Timeout :: timeout(),
                       Error :: {error, reason()}.

從由 name 指定的符號連結讀取連結目標。

連結至此函式

rename(ChannelPid, OldName, NewName)

檢視原始碼
-spec rename(ChannelPid, OldName, NewName) -> ok | Error
                when
                    ChannelPid :: pid(),
                    OldName :: string(),
                    NewName :: string(),
                    Error :: {error, reason()}.

等同於 rename/4

連結至此函式

rename(ChannelPid, OldName, NewName, Timeout)

檢視原始碼
-spec rename(ChannelPid, OldName, NewName, Timeout) -> ok | Error
                when
                    ChannelPid :: pid(),
                    OldName :: string(),
                    NewName :: string(),
                    Timeout :: timeout(),
                    Error :: {error, reason()}.

重新命名名為 OldName 的檔案,並將其命名為 NewName

-spec start_channel(ssh:open_socket() | ssh:connection_ref() | ssh:host()) ->
                       {ok, pid()} | {ok, pid(), ssh:connection_ref()} | {error, reason()}.

等同於 start_channel/3

-spec start_channel(ssh:open_socket(), [ssh:client_option() | sftp_option()]) ->
                       {ok, pid(), ssh:connection_ref()} | {error, reason()};
                   (ssh:connection_ref(), [sftp_option()]) ->
                       {ok, pid()} | {ok, pid(), ssh:connection_ref()} | {error, reason()};
                   (ssh:host(), [ssh:client_option() | sftp_option()]) ->
                       {ok, pid(), ssh:connection_ref()} | {error, reason()}.

等同於 start_channel/3

連結至此函式

start_channel(Host, Port, UserOptions0)

檢視原始碼
-spec start_channel(ssh:host(), inet:port_number(), [ssh:client_option() | sftp_option()]) ->
                       {ok, pid(), ssh:connection_ref()} | {error, reason()}.

start_channel(Host, Port, Options) ->

如果未提供連線參照,則會建立連線,並回傳新的連線。會啟動 SSH 通道程序來處理與 SFTP 伺服器的通訊。此程序的傳回 pid 會用作此模組中所有其他 API 函式的輸入。

選項

  • {timeout, timeout()} - 有兩種方法可以為底層的 ssh 連線設定逾時

    • 如果設定了連線逾時選項 connect_timeout,則該值也會用於協商逾時,且此選項 (timeout) 會被忽略。
    • 否則,此選項 (timeout) 僅用作協商逾時,且不會設定連線逾時

    該值預設為 infinity

  • {sftp_vsn, integer()} - 所需的 SFTP 協定版本。實際版本是所需版本與 SFTP 伺服器支援的最大版本之間的最小值。

所有其他選項都會直接傳遞至 ssh:connect/3,如果已提供連線,則會忽略。

連結至此函式

stop_channel(ChannelPid)

檢視原始碼
-spec stop_channel(ChannelPid) -> ok when ChannelPid :: pid().

停止 SFTP 通道。不會關閉 SSH 連線。使用 ssh:close/1 關閉它。

連結至此函式

write(ChannelPid, Handle, Data)

檢視原始碼
-spec write(ChannelPid, Handle, Data) -> ok | Error
               when ChannelPid :: pid(), Handle :: term(), Data :: iodata(), Error :: {error, reason()}.

等同於 write/4

連結至此函式

write(ChannelPid, Handle, Data, Timeout)

檢視原始碼
-spec write(ChannelPid, Handle, Data, Timeout) -> ok | Error
               when
                   ChannelPid :: pid(),
                   Handle :: term(),
                   Data :: iodata(),
                   Timeout :: timeout(),
                   Error :: {error, reason()}.

data 寫入由 Handle 引用的檔案。該檔案必須以 writeappend 標誌開啟。如果成功則返回 ok,否則返回 {error, reason()}

連結至此函式

write_file(ChannelPid, File, Data)

檢視原始碼
-spec write_file(ChannelPid, File, Data) -> ok | Error
                    when
                        ChannelPid :: pid(),
                        File :: string(),
                        Data :: iodata(),
                        Error :: {error, reason()}.

等同於 write_file/4

連結至此函式

write_file(ChannelPid, File, Data, Timeout)

檢視原始碼
-spec write_file(ChannelPid, File, Data, Timeout) -> ok | Error
                    when
                        ChannelPid :: pid(),
                        File :: string(),
                        Data :: iodata(),
                        Timeout :: timeout(),
                        Error :: {error, reason()}.

將檔案寫入伺服器。如果檔案不存在,則會建立該檔案;如果檔案存在,則會覆寫該檔案。

連結至此函式

write_file_info(ChannelPid, Name, FileInfo)

檢視原始碼
-spec write_file_info(ChannelPid, Name, FileInfo) -> ok | Error
                         when
                             ChannelPid :: pid(),
                             Name :: string(),
                             FileInfo :: file:file_info(),
                             Error :: {error, reason()}.

等同於 write_file_info/4

連結至此函式

write_file_info(ChannelPid, Name, FileInfo, Timeout)

檢視原始碼
-spec write_file_info(ChannelPid, Name, FileInfo, Timeout) -> ok | Error
                         when
                             ChannelPid :: pid(),
                             Name :: string(),
                             FileInfo :: file:file_info(),
                             Timeout :: timeout(),
                             Error :: {error, reason()}.

file_info 記錄中的檔案資訊寫入由 Name 指定的檔案。請參閱 file:write_file_info/2,3 以取得有關記錄的資訊。