golang ssh 将退格键写入标准输入

我正在编写一个 ssh 客户端来解析交换机的配置。这不是交互式客户端。在某些情况下,我需要删除部分先前键入的命令。如果我使用的是 PuTTY,我会通过按退格键或 Ctrl-X 键盘快捷键来完成。


如何向服务器发送 Ctrl-X 或 Backspace 命令?我已经尝试发送 \b 和 0x08,在这种情况下,它没有按预期工作。


下面的示例代码没有错误处理等......


拨写:


 c,_ := ssh.Dial( <dial ,_parameters> )

 session, _= c.NewSession()

 

 modes := ssh.TerminalModes{

        ssh.ECHO:          0,     // disable echoing

        ssh.TTY_OP_ISPEED: 38400, // input speed = 14.4kbaud

        ssh.TTY_OP_OSPEED: 38400, // output speed = 14.4kbaud

    }


session.RequestPty("xterm", 80, 40, modes); err != nil {

        return err

    }


stdin, _ = session.StdinPipe()


stdin.Write([]byte( <command> ))

读:


var buf = make([]byte, 1024)

for {

    n, e := c.stdout.Read(buf)

    if e != nil {

        fmt.Println(e.Error())

        break

    }


    if n != 0 {

        fmt.Print(string(buf[:n]))

    }


    ...

}

编辑: 问题是在显示输出后,命令仍然保持不变,因为我没有向标准输入写入“\n”。


例如,如果我发送“display bla?” 我看到这个


<some_switch>display bla ?

bla

bla-bla

...

bla-bla-bla


<some_switch>display bla

如果我想看别的东西,我需要擦除“display bla”。问题是如何?


PS对不起我的英语。


慕无忌1623718
浏览 140回答 1
1回答

HUH函数

非打印ASCII 符号必须与命令分开发送。如果没有输出,则无需读取标准输出。//To write Ctrl-Xstdin.Write([]byte{0x18})//Then send the commandstdin.Write([]byte(<command>))//To write Backspacestdin.Write([]byte{0x8})
打开App,查看更多内容
随时随地看视频慕课网APP