Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Melaksanakan Perintah pada Mesin Jauh dengan Go?

Bagaimana untuk Melaksanakan Perintah pada Mesin Jauh dengan Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-07 21:35:03638semak imbas

How to Execute Commands on a Remote Machine with Go?

Melaksanakan Perintah pada Mesin Jauh dengan Go

Melaksanakan arahan pada mesin jauh melalui SSH boleh dicapai dengan "golang.org/ pakej x/crypto/ssh".

Untuk mewujudkan sambungan, buat konfigurasi klien dengan pengguna, alamat hos dan kaedah pengesahan (PublicKeys atau Kata Laluan).

Setelah disambungkan, satu sesi boleh dibuat untuk setiap pelaksanaan arahan. Dengan menetapkan nilai session.Stdout, output arahan boleh ditangkap dalam penimbal.

Fungsi contoh yang disediakan, remoteRun(), menunjukkan cara menjalankan arahan tertentu pada mesin jauh dan mengembalikan hasilnya:

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
}

Dengan menggunakan pendekatan ini, anda boleh melaksanakan arahan dengan mudah pada mesin jauh daripada Go CLI anda dan memproses outputnya.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Perintah pada Mesin Jauh dengan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn