Description
An Elixir wrapper around the Erlang SFTP application. This allows for the use of Elixir Streams to transfer files via SFTP.
SftpEx alternatives and similar packages
Based on the "Networking" category.
Alternatively, view SftpEx alternatives based on common mentions on social networks and blogs.
-
Firezone
Open-source VPN server and egress firewall for Linux built on WireGuard. Firezone is easy to set up (all dependencies are bundled thanks to Chef Omnibus), secure, performant, and self hostable. -
Ockam
Orchestrate end-to-end encryption, cryptographic identities, mutual authentication, and authorization policies between distributed applications – at massive scale. -
sshkit
An Elixir toolkit for performing tasks on one or more servers, built on top of Erlang’s SSH application. -
wifi
Various utility functions for working with the local Wifi network in Elixir. These functions are mostly useful in scripts that could benefit from knowing the current location of the computer or the Wifi surroundings.
SaaSHub - Software Alternatives and Reviews
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of SftpEx or a related project?
Popular Comparisons
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:
Add
sftp_ex
to your list of dependencies inmix.exs
:def deps do [{:sftp_ex, "~> 0.2.1"}] end
Ensure
sftp_ex
is started before your application:def application do [applications: [:sftp_ex]] end