我能够使用Golang将Telnet转发到WebSocket,类似于以下内容:
func forwardtcp(wsconn *websocket.Conn, conn *telnet.Conn) {
connbuf := bufio.NewReader(conn)
tcpbuffer := make([]byte, 128)
for {
n, err := connbuf.Read(tcpbuffer)
if err != nil {
log.Println("TCP Read failed")
break
}
if err == nil {
wsconn.WriteMessage(websocket.BinaryMessage, tcpbuffer[:n])
}
}
}
然而,我无法像使用Web浏览器那样在SSH或Shell会话中执行类似操作。我不明白如何使用此功能的基本概念。
targetStdout, _ := session.StdoutPipe()
targetStdin, _ := session.StdinPipe()
片段。
我能使用io.Copy,但不确定如何将它们格式化为可以通过websocket连接发送的数据报。
是否可以以一种方式处理targetStdin和targetStdout管道,使它们可以读取和写入字节,例如从websocket连接接收到的字节? 还是有更好的方法来获取SSH连接的io?