Erlang ssh_sftp返回eoptions密码,这个错误是什么意思?

时间:2017-03-01 23:15:02

标签: ssh erlang elixir sftp

我的代码现在非常简单,我从elixir调用erlang。

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文档位于ssh_sftp

1 个答案:

答案 0 :(得分:1)

{:eoptions, _}返回when an option passed contains a value of invalid type。您收到此错误是因为:password必须是列表(Erlang String或Elixir charlist)。 :user和主机名也必须是字符列表。以下应该有效:

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

这让我觉得我从根本上误解了erlang文档。

Erlang中的双引号字符串是字符列表,而不是二进制文件。如果您在Erlang代码中看到双引号字符串,则需要在Elixir中使用单引号字符串。