使用 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中文网其他相关文章!