我正在编写一个 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 ?blabla-bla...bla-bla-bla<some_switch>display bla如果我想看别的东西,我需要擦除“display bla”。问题是如何?PS对不起我的英语。
- 1 回答
- 0 关注
- 180 浏览
添加回答
举报
0/150
提交
取消