亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

golang ssh 將退格鍵寫入標準輸入

golang ssh 將退格鍵寫入標準輸入

Go
慕無忌1623718 2022-12-26 10:46:38
我正在編寫一個 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 回答

?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

非打印ASCII 符號必須與命令分開發送。如果沒有輸出,則無需讀取標準輸出。


//To write Ctrl-X

stdin.Write([]byte{0x18})


//Then send the command

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


//To write Backspace

stdin.Write([]byte{0x8})


查看完整回答
反對 回復 2022-12-26
  • 1 回答
  • 0 關注
  • 221 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號