Maison >développement back-end >Golang >Comment exécuter des commandes sur une machine distante avec Go ?

Comment exécuter des commandes sur une machine distante avec Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-07 21:35:03643parcourir

How to Execute Commands on a Remote Machine with Go?

Exécuter des commandes sur une machine distante avec Go

L'exécution de commandes sur une machine distante via SSH peut être réalisée avec le "golang.org/ x/crypto/ssh".

Pour établir une connexion, créez une configuration client avec l'utilisateur, l'adresse de l'hôte et la méthode d'authentification (PublicKeys ou Mot de passe).

Une fois connecté, une session peut être créé pour chaque exécution de commande. En définissant la valeur session.Stdout, la sortie de la commande peut être capturée dans un tampon.

L'exemple de fonction fourni, remoteRun(), montre comment exécuter une commande spécifique sur une machine distante et renvoyer le résultat :

func remoteRun(user string, addr string, privateKey string, cmd string) (string, error) {
    // Parse the private key and configure the SSH client
    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),
        },
    }

    // Connect to the remote machine
    client, err := ssh.Dial("tcp", net.JoinHostPort(addr, "22"), config)
    if err != nil {
        return "", err
    }

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

    // Capture stdout for the command
    var b bytes.Buffer
    session.Stdout = &b

    // Execute the command and return the output
    err = session.Run(cmd)
    return b.String(), err
}

En utilisant cette approche, vous pouvez facilement exécuter des commandes sur des machines distantes à partir de votre Go CLI et traiter leurs sorties.

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!

Déclaration:
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