我在这里张贴了一个类似的问题,可以从telnet会话中阅读。
我正在尝试从golang中的SSH会话读取数据。我编写了以下函数来尝试完成此任务。
我遇到了一个问题,我试图从stdout读取内容,该内容为空,导致程序锁定。为了解决这个问题,我编写了BufferSocketData,它检查ReadDataFromSocket应该附加到的通道,如果它有数据,则将其添加到缓冲区。如果1秒钟后仍未收到任何数据,它将停止读取。
这虽然不能正常工作,但我不确定为什么。即使缓冲区中有数据,也只有第一个读取获得新数据,随后的读取返回一个空字符串。
在上一个问题中,我能够使用SetReadDeadline限制从套接字读取的时间,是否可以在SSH会话中使用类似的功能?还是我需要一起使用其他策略?
如果您需要其他任何信息,请告诉我。
为该会话启动单个读取器goroutine。此goroutine从会话读取并将数据发送到通道。
在主goroutine中,循环选择包含接收数据和超时情况的案例。适当处理每种情况。