登录
首页 >  Golang >  Go问答

如何以 Golang 中使用 ssh 库来捕获输出

来源:stackoverflow

时间:2024-02-10 16:36:19 292浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《如何以 Golang 中使用 ssh 库来捕获输出》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

我正在编写一个小项目来管理 cisco 交换机,一切都很好,直到我需要从 stout 获取输出。这是我的代码。

func return_current_user(conn *ssh.client) {
    session, err := conn.newsession()
    if err != nil {
        log.fatal("failed to create session %v: ", err)
    }
    
    sdtin, _ := session.stdinpipe()
    session.stdout = os.stdout
    session.stdin = os.stdin
    session.shell()

    cmds := []string{
        "conf t",
        "show users",
        
    }
    for _, cmd := range cmds {
        fmt.fprintf(sdtin, "%s\n", cmd)
    }
    session.wait()
    session.close()
}

这是我在屏幕上的输出:

NAME     LINE         TIME         IDLE          PID COMMENT
admin    pts/0        Aug 16 06:13 00:02       29059 (192.168.57.1)
NAME     LINE         TIME         IDLE          PID COMMENT
admin    pts/0        Aug 16 06:13 00:02       29059 (192.168.57.1)

我只能显示远程命令的输出,但是如何将这些输出保存在另一个变量中以供将来处理。非常感谢。


正确答案


不要使用 os.Stdout 覆盖 session.Stdout,这只会将输出发送到控制台,而是从 session.StdoutPipe() 返回的 Reader 读取。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>