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!