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

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

DDD
Libérer: 2024-11-07 19:12:02
original
836 Les gens l'ont consulté

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
}
Copier après la connexion

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal