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!