Skip to content

galina/sftp_ex

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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:
```elixir
def deps do
  [{:sftp_ex, "~> 0.2.1"}]
end
```
  1. Ensure sftp_ex is started before your application:
```elixir
def application do
  [applications: [:sftp_ex]]
end
```

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Elixir 100.0%