源**
// conf.go
)// config 配置資訊
type config struct
// server 伺服器
type server struct
var (
// conf 全域性配置變數
conf = new(config)
// homepath 專案位置
homepath string
)func init()
}// readconf 讀取配置檔案
func readconf()
if conf == nil
for _,value := range conf.servers
}}
// main
package main
import (
"flag"
"fmt"
"io/ioutil"
"log"
"net"
"os"
// "os"
"os/exec"
"sync"
"time"
"golang.org/x/crypto/ssh"
)// 設計思路
// 多台伺服器同時go get 包,保證多台伺服器上有go,並且能夠fq
// shost session and host
type shost struct
// flaggit 命令
// sessions 對話組
var shosts = make(*shost, 0)
// wg 執行緒組
var wg sync.waitgroup
func init() }}
// connect 建立伺服器連線
func connect(server *server) (*shost, error)
// get auth method
auth := make(ssh.authmethod, 0)
clientconfig := &ssh.clientconfig,
} addr := fmt.sprintf("%s:%d", server.host, server.port)
client, err := ssh.dial("tcp", addr, clientconfig)
if err != nil
session, err := client.newsession()
if err != nil
return &shost, nil
}func main()
stderr, err := cmd.stderrpipe()
if err != nil
if err := cmd.start(); err != nil
outbytes, err := ioutil.readall(stdout)
if err != nil else
errbytes, err := ioutil.readall(stderr)
if err != nil else
// 後再伺服器上執行
for i := 0; i < len(shosts); i++
} if iserr
}}
;配置檔案寫入方法 利用配置檔案的分組規則寫
[servers "a"]
user = 使用者名稱
port = 開放埠號
host = ip
password = 密碼
goabpath = /usr/local/go/bin/go
go get命令被牆解決思路
go get命令被牆,很蛋疼,從網上找到了幾種方法,總結了下,可以概括為如下三種 1 買ss,開vpn 學生黨沒錢,也不常用,忽略 2 用git從github上clone 但每次都要自己建目錄,很煩,大批量clone時,更煩 3 使用gopm命令代替,但是安裝gopm的方法是go get u git...
關於go get命令的一些簡談
我剛開始接觸golang的時候,曾以為go get git clone,後來發現,是我想的太簡單了。按照官方的說法,go get借助 管理工具 例如 git,svn,hg等等 從遠端拉取 和依賴包,並且自動完成編譯和安裝。可以這麼理解,go get獲取 到本地的時候編譯器會通覽一遍 得出需要哪些依賴...
go get的beego安裝問題
go get的beego安裝問題 一開始go get沒反應和出現問題,我以為是牆的問題或者是環境變數的問題,所以錯誤的鼓搗了半天,後來才想的到應該在看看git是否正真的安裝上了。排除git 是否安裝不成功的問題 開啟cmd 輸入命令 git 如果正常出現,以下提示,表明你的git安裝沒有問題。但我這...