Maison > développement back-end > Golang > le corps du texte

Comment exécuter des commandes à distance via SSH dans Go CLI ?

Susan Sarandon
Libérer: 2024-11-07 19:50:02
original
787 Les gens l'ont consulté

How to Run Remote Commands via SSH in Go CLI?

Exécuter des commandes à distance via SSH dans Go CLI

Pour exécuter des commandes sur une machine distante à l'aide d'une Go CLI, vous devez utiliser le package "golang.org/x/crypto/ssh".

Exécution de commande simple

Voici une fonction qui démontre une utilisation simple de l'exécution d'une seule commande sur un machine distante et renvoyant la sortie :

import (
    "bytes"
    "golang.org/x/crypto/ssh"
    "io"
    "net"
)

func remoteRun(user string, addr string, privateKey string, 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
    session.Stdout = &b
    err = session.Run(cmd)
    return b.String(), err
}
Copier après la connexion

Utilisation :

  output, err := remoteRun("root", "MY_IP", "PRIVATE_KEY", "ls")
  if err != nil {
      // handle error
  }
Copier après la connexion

Exécution multi-sauts

Pour exécution en un seul saut, vous pouvez simplement établir d'abord une connexion SSH à la machine intermédiaire à l'aide de l'adresse et de la clé privée fournies. Une fois connecté, utilisez la fonction remoteRun au sein de cette session pour exécuter la commande sur la machine interne.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal