Exécuter des commandes à distance avec SSH dans Golang CLI
L'exécution de commandes sur des machines distantes est une tâche courante lors de l'automatisation de l'administration système. Dans Golang, le package « golang.org/x/crypto/ssh » offre un moyen pratique d'établir des connexions SSH et d'exécuter des commandes à distance.
Pour exécuter une commande sur une machine distante, suivez ces étapes :
Établir une connexion SSH :
Utilisez la fonction ssh.Dial pour établir une Connexion SSH à la machine distante. Vous devrez fournir les informations suivantes :
Voici un exemple de fonction montrant comment exécuter une commande à distance et renvoyer sa sortie :
import ( "bytes" "net" "golang.org/x/crypto/ssh" ) func remoteRun(user, addr, privateKey, 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 // capture output session.Stdout = &b // get output err = session.Run(cmd) return b.String(), err }
Cette fonction peut être utilisée pour exécutez des commandes sur des machines distantes, offrant ainsi un moyen pratique d'automatiser les tâches d'administration système à partir des scripts CLI Golang.
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!