2014-10-17 528 views
2

我有50臺Linux機器(RHEL)。我想通過在中央機器上運行的go腳本在這些機器上運行一些命令。我從中央機器到所有遠程機器都設置了無密碼ssh認證。雖然我也對非ssh解決方案開放,儘管安全是首選。golang:在遠程服務器上執行shell命令

正在運行的命令會隨着時間而改變。我也想處理在中央機器上運行的腳本中的遠程機器上運行的命令的輸出和返回代碼。

我只發現這ssh package,它只支持密碼驗證方法,這是不夠好的。

還有其他的選擇嗎?

回答

1

你只可以使用此包https://github.com/hypersleep/easyssh

例如,您可以遠程調用ps ax

package main 

import (
    "fmt" 
    "github.com/hypersleep/easyssh"  
) 

func main() { 
    ssh := &easyssh.MakeConfig { 
     User: "core", 
     Server: "core", 
     Key: "/.ssh/id_rsa", 
     Port: "22", 
    } 

    response, err := ssh.Run("ps ax") 
    if err != nil { 
     panic("Can't run remote command: " + err.Error()) 
    } else { 
     fmt.Println(response) 
    } 
}