Bagaimana untuk Melaksanakan Perintah Jauh dengan SSH dalam CLI Golang?

DDD
Lepaskan: 2024-11-11 08:12:03
asal
905 orang telah melayarinya

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
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan