Go を使用してリモート マシン上でコマンドを実行する
SSH を介してリモート マシン上でコマンドを実行するには、「golang.org/」を使用します。 x/crypto/ssh" パッケージ。
接続を確立するには、ユーザー、ホスト アドレス、認証方法 (PublicKeys または Password) を使用してクライアント構成を作成します。
接続すると、セッションが確立されます。コマンド実行ごとに作成できます。 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 中国語 Web サイトの他の関連記事を参照してください。