Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Melaksanakan Perintah Jauh dengan SSH dalam CLI Golang?

Bagaimana untuk Melaksanakan Perintah Jauh dengan SSH dalam CLI Golang?

DDD
DDDasal
2024-11-11 08:12:03943semak imbas

How to Execute Remote Commands with SSH in a Golang CLI?

Melaksanakan Perintah Jauh dengan SSH dalam CLI Golang

Melaksanakan arahan pada mesin jauh ialah tugas biasa apabila mengautomasikan pentadbiran sistem. Di Golang, pakej "golang.org/x/crypto/ssh" menawarkan cara yang mudah untuk mewujudkan sambungan SSH dan menjalankan arahan dari jauh.

Untuk melaksanakan arahan pada mesin jauh, ikut langkah berikut:

  1. Mewujudkan Sambungan SSH:
    Gunakan fungsi ssh.Dail untuk mewujudkan sambungan SSH ke mesin jauh. Anda perlu memberikan maklumat berikut:

    • Nama Pengguna
    • Alamat IP atau nama hos
    • Port (lalai ialah 22)
    • Butiliti pengesahan ( kunci atau kata laluan)
  2. Buat Sesi SSH:
    Setelah sambungan diwujudkan, gunakan fungsi NewSession untuk mencipta sesi baharu. Sesi mewakili sambungan kepada arahan tertentu.
  3. Konfigurasikan Input dan Output:
    Anda boleh mengkonfigurasi strim masuk dan keluar standard untuk sesi. Contohnya, anda boleh mengubah hala keluaran kepada bait. Penampan untuk menangkap keputusan arahan.
  4. Jalankan Perintah:
    Gunakan fungsi session.Run untuk melaksanakan arahan yang diingini pada mesin jauh itu. Fungsi ini akan menyekat sehingga arahan selesai.

Berikut ialah contoh fungsi yang menunjukkan cara menjalankan arahan jauh dan mengembalikan outputnya:

import (
    "bytes"
    "net"

    "golang.org/x/crypto/ssh"
)

func remoteRun(user, addr, privateKey, cmd string) (string, error) {
    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),
        },
    }

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

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

    var b bytes.Buffer  // capture output
    session.Stdout = &b // get output

    err = session.Run(cmd)
    return b.String(), err
}

Fungsi ini boleh digunakan untuk laksanakan arahan pada mesin jauh, menyediakan cara yang mudah untuk mengautomasikan tugas pentadbiran sistem daripada skrip CLI Golang.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Perintah Jauh dengan SSH dalam 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