我正在編寫一個 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對不起我的英語。
golang ssh 將退格鍵寫入標準輸入
慕無忌1623718
2022-12-26 10:46:38