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

Bagaimana untuk Melaksanakan Perintah pada Mesin Jauh dengan CLI Golang?

DDD
DDDasal
2024-11-07 19:12:02786semak imbas

How to Execute Commands on Remote Machines with a Golang CLI?

Melaksanakan Perintah pada Mesin Jauh dengan CLI golang

Untuk melaksanakan arahan pada mesin jauh, CLI Golang boleh menggunakan "golang.org /x/crypto/ssh" pakej. Berikut ialah penyelesaian untuk pertanyaan anda:

Fungsi remoteRun menunjukkan cara untuk melaksanakan satu arahan pada mesin jauh dan mendapatkan semula outputnya:

func remoteRun(user string, addr string, privateKey string, cmd string) (string, error) {
    // Read or retrieve the private key
    key, err := ssh.ParsePrivateKey([]byte(privateKey))
    if err != nil {
        return "", err
    }

    // Configure authentication
    config := &ssh.ClientConfig{
        User: user,
        HostKeyCallback: ssh.InsecureIgnoreHostKey(), // Allow any host
        Auth: []ssh.AuthMethod{
            ssh.PublicKeys(key),
        },
    }

    // Establish a connection
    client, err := ssh.Dial("tcp", net.JoinHostPort(addr, "22"), config)
    if err != nil {
        return "", err
    }

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

    // Collect the command's output
    var b bytes.Buffer
    session.Stdout = &b

    // Execute the command
    err = session.Run(cmd)
    if err != nil {
        return "", err
    }

    return b.String(), nil
}

Fungsi ini mengambil pengguna, alamat, peribadi kunci, dan perintah sebagai input dan mengembalikan output arahan sebagai rentetan. Anda boleh menentukan pengguna, alamat dan kunci peribadi yang memberikan akses kepada mesin yang anda ingin laksanakan arahannya.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Perintah pada Mesin Jauh dengan CLI Golang?. 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