golang ssh terminal 模式 进入shell 后 按 "上" 键 无法获取上一个命令

dewei
  • 0
新手上路,请多包涵

各位好, 我使用golang的
"golang.org/x/crypto/ssh"
"golang.org/x/crypto/ssh/terminal"
这两个模块进行模拟的terminal登陆, 代码大致如下:

modes := ssh.TerminalModes{
        ssh.ECHO:          0,     // 禁用回显(0禁用,1启动)
        ssh.TTY_OP_ISPEED: 14400, // input speed = 14.4kbaud
        ssh.TTY_OP_OSPEED: 14400, //output speed = 14.4kbaud
        ssh.IGNCR:         1,     // Ignore CR on input.
    }

    _log := new(bytes.Buffer)

    session.Stdout = io.MultiWriter(os.Stdout, _log)
    session.Stderr = io.MultiWriter(os.Stderr, _log)
    session.Stdin = NewMyReader()

    if err := session.RequestPty("xterm", 120, 200, modes); err != nil {
        //if err := session.RequestPty("vt220", 80, 40, modes); err != nil {
        log.Fatalf("request for pseudo terminal failed: %s", err)
    }

    if err = session.Shell(); err != nil {
        log.Fatalf("start shell error: %s", err.Error())
    }

当我成功进入到机器后, 输入命令都可以. 但当我按了 上 键 后, 理论上应该显示上一次的命令, 但是现在却是 ^[[A 这样一个东西, 并且点击 tab 也没有补全. 想问下如何才能通过使用这个库来实现这两个功能. 谢谢
image.png

回复
阅读 468
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏