首页 > 后端开发 > Golang > 如何使用Go在远程机器上执行命令?

如何使用Go在远程机器上执行命令?

Mary-Kate Olsen
发布: 2024-11-07 21:35:03
原创
661 人浏览过

How to Execute Commands on a Remote Machine with Go?

使用 Go 在远程机器上执行命令

通过 SSH 在远程机器上执行命令可以通过“golang.org/ x/crypto/ssh”包。

要建立连接,请使用用户、主机地址和身份验证方法(公钥或密码)创建客户端配置。

连接后,会话可以为每个命令执行创建。通过设置 session.Stdout 值,可以在缓冲区中捕获命令的输出。

提供的示例函数,remoteRun(),演示了如何在远程计算机上运行特定命令并返回结果:

func remoteRun(user string, addr string, privateKey string, cmd string) (string, error) {
    // Parse the private key and configure the SSH client
    key, err := ssh.ParsePrivateKey([]byte(privateKey))
    if err != nil {
        return "", err
    }
    config := &ssh.ClientConfig{
        User: user,
        HostKeyCallback: ssh.InsecureIgnoreHostKey(),
        Auth: []ssh.AuthMethod{
            ssh.PublicKeys(key),
        },
    }

    // Connect to the remote machine
    client, err := ssh.Dial("tcp", net.JoinHostPort(addr, "22"), config)
    if err != nil {
        return "", err
    }

    // Create a new session
    session, err := client.NewSession()
    if err != nil {
        return "", err
    }
    defer session.Close()

    // Capture stdout for the command
    var b bytes.Buffer
    session.Stdout = &b

    // Execute the command and return the output
    err = session.Run(cmd)
    return b.String(), err
}
登录后复制

通过利用这种方法,您可以轻松地从 Go CLI 在远程计算机上执行命令并处理其输出。

以上是如何使用Go在远程机器上执行命令?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板