Maison  >  Article  >  développement back-end  >  Comment exécuter des commandes sur des machines distantes avec une CLI Golang ?

Comment exécuter des commandes sur des machines distantes avec une CLI Golang ?

DDD
DDDoriginal
2024-11-07 19:12:02837parcourir

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

Exécuter des commandes sur des machines distantes avec une CLI golang

Pour exécuter des commandes sur des machines distantes, une CLI Golang peut utiliser le "golang.org /x/crypto/ssh". Voici une solution à votre requête :

La fonction remoteRun montre comment exécuter une seule commande sur une machine distante et récupérer sa sortie :

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
}

Cette fonction prend l'utilisateur, l'adresse, le privé key et command en entrée et renvoie la sortie de la commande sous forme de chaîne. Vous pouvez spécifier l'utilisateur, l'adresse et la clé privée qui accordent l'accès à la machine sur laquelle vous souhaitez exécuter la commande.

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