Popularity
4.9
Stable
Activity
0.0
Stable
22
1
19

Description

An Elixir wrapper around the Erlang SFTP application. This allows for the use of Elixir Streams to transfer files via SFTP.

Monthly Downloads: 4,108
Programming language: Elixir
License: MIT License
Latest version: v0.2.6

SftpEx alternatives and similar packages

Based on the "Networking" category.
Alternatively, view SftpEx alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of SftpEx or a related project?

Add another 'Networking' Package

README

SftpEx

An Elixir wrapper around the Erlang SFTP application. This allows for the use of Elixir Streams to transfer files via SFTP.

Creating a Connection

The following is an example of creating a connection with a username and password.

{:ok, conn} = SftpEx.connect([host: 'somehost', user: 'someuser', password: 'somepassword'])

Other connection arguments can be found in the [Erlang documentation]("http://erlang.org/doc/man/ssh.html#connect-3")

Streaming Files

An example of writing a file to a server is the following.

stream = File.stream!("filename.txt")
    |> Stream.into(SftpEx.stream!(connection,"/home/path/filename.txt"))
    |> Stream.run

A file can be downloaded as follows - in this example a remote file "test2.csv" is downloaded to the local file "filename.txt"

SftpEx.stream!(connection,"test2.csv") |> Stream.into(File.stream!("filename.txt")) |> Stream.run

or using Enum.into

SftpEx.stream!(connection, "test2.csv") |> Enum.into(File.stream!("filename.txt"))

This follows the same pattern as Elixir IO streams so a file can be transferred from one server to another via SFTP as follows.

stream = SftpEx.stream!(connection,"/home/path/filename.txt")
|> Stream.into(SftpEx.stream!(connection2,"/home/path/filename.txt"))
|> Stream.run

Installation

If available in Hex, the package can be installed as:

  1. Add sftp_ex to your list of dependencies in mix.exs:

    def deps do
      [{:sftp_ex, "~> 0.2.1"}]
    end
    
  2. Ensure sftp_ex is started before your application:

    def application do
      [applications: [:sftp_ex]]
    end