Heim  >  Artikel  >  Backend-Entwicklung  >  Wie führe ich Befehle auf Remote-Rechnern mit einer Golang-CLI aus?

Wie führe ich Befehle auf Remote-Rechnern mit einer Golang-CLI aus?

DDD
DDDOriginal
2024-11-07 19:12:02786Durchsuche

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

Ausführen von Befehlen auf Remote-Maschinen mit einer Golang-CLI

Um Befehle auf Remote-Maschinen auszuführen, kann eine Golang-CLI die Datei „golang.org“ verwenden /x/crypto/ssh“-Paket. Hier ist eine Lösung für Ihre Anfrage:

Die Funktion remoteRun zeigt, wie ein einzelner Befehl auf einem Remote-Computer ausgeführt und seine Ausgabe abgerufen wird:

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
}

Diese Funktion übernimmt den Benutzer, die Adresse, privat Schlüssel und Befehl als Eingabe und gibt die Ausgabe des Befehls als Zeichenfolge zurück. Sie können den Benutzer, die Adresse und den privaten Schlüssel angeben, der Zugriff auf die Maschine gewährt, auf der Sie den Befehl ausführen möchten.

Das obige ist der detaillierte Inhalt vonWie führe ich Befehle auf Remote-Rechnern mit einer Golang-CLI aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn