我正在尝试使用Erlang :ssh
库在Elixir中创建自定义SSH Shell,以便可以使用一组有限的选项/命令将SSH导入我的应用程序。我设法成功登录(在这种情况下,使用密码就可以了),但是后来我既无法向客户端发送任何信息,也无法从客户端接收任何信息(至少我不知道如何)。
我已阅读:ssh
库的文档,并以esshd
库为例,但找不到所需的信息,因此该库对我不起作用。请参阅随附的示例代码。
def init(_opts) do
Logger.info("--> Starting Communications.SSHD process")
# start the erlang library
:ssh.start()
# config the server
{ok, sshd2} = :ssh.daemon(10022,
shell: &on_shell/2,
system_dir: './priv/daemon',
user_passwords: [{'test', 'testpass'}],
user_dir: './')
# link the ssh daemon pid to ourselves
Process.link sshd2
{:ok, []}
end
def on_shell(username, {ip, port} = peer_address) do
Logger.info("on_shell() Called")
# spawn a thread to handle the shell
spawn(__MODULE__, handle_shell, [])
end
# handle the shell commands
def handle_shell() do
Logger.info("Shell started #{inspect Process.group_leader}")
_ = :io.setopts(Process.group_leader, binary: true, encoding: :unicode)
# this never appears on client or server console
IO.puts "Interactive example SSH shell - type exit ENTER to quit"
end
有什么想法吗?