2017-03-01 3 views
0

私のコードはかなり単純ですが、私はelixirからerlangを呼び出しています。Erlang ssh_sftpがeoptionsパスワードを返します。このエラーはどういう意味ですか?

iex> :ssh.start() 
iex> :ssh_sftp.start_channel("192.168.1.183", 22, [{:user, "username"}, {:password, "password"}]) 

:ssh.start()戻り:okが、:ssh_sftp.start_channel戻り{:error, {:eoptions, {:password, "password"}}}。パスワードタプルを削除すると、そのユーザタプルについて文句を言います。これは、私が基本的にerlangのドキュメントを誤解しているということを私にしています。私が間違ってやっていることを理解するのを助けて欲しい。 ssh_sftpのマニュアルは

答えて

1

{:eoptions, _}です。when an option passed contains a value of invalid typeが返されます。 :passwordはリスト(Erlang StringまたはElixir charlist)でなければならないため、このエラーが発生しています。 :userであり、ホスト名もcharlistsでなければなりません。以下は動作するはずです:

:ssh_sftp.start_channel('192.168.1.183', 22, [{:user, 'username'}, {:password, 'password'}]) 

をこれは私、私は基本的にErlangのドキュメントを誤解してる事になります。

Erlangの二重引用符付き文字列は、バイナリではなく文字のリストです。 Erlangコードで二重引用符で囲まれた文字列を参照する場合は、代わりにElixirで単一引用符付きの文字列を使用する必要があります。

+0

これは '{password、string()}'というドキュメントでは 'password'がアトムで、' string() 'がElixirの単一引用符で囲まれた文字列であることを意味していますか? – CallMeNorm

+1

はい、Erlangの 'password' ==':password'とElixirの '' foo'' = '' foo''です。 ElixirのErlangライブラリ(http://elixir-lang.org/crash-course.html)を使用する予定の場合は、このガイドを参照してください。 – Dogbert

関連する問題