我想编写一个接受 SSH 会话并运行命令的函数,提供一个io.Reader在收到时读取其输出的函数。
package main
import (
"golang.org/x/crypto/ssh"
"io"
)
func StreamOutput(session *ssh.Session, command string) (output io.Reader, err error) {
if session != nil {
defer session.Close()
}
if err != nil {
return output, err
}
// connect to both outputs
outReader, err := session.StdoutPipe()
if err != nil {
return output, err
}
errReader, err := session.StderrPipe()
if err != nil {
return output, err
}
output = io.MultiReader(outReader, errReader)
err = session.Start(command)
// return the readers that are to be read from
return output, err
但是,当我使用ioutil.ReadAllon测试此代码output时,它只会间歇性地打印适当的输出,即使在调用session.Wait(). 为什么会这样?有没有更好的方法来返回函数输出(可能是通道?)?谢谢!
暮色呼如
相关分类