我的代码现在非常简单,我从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
答案 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中使用单引号字符串。