New file |
| | |
| | | package main |
| | | |
| | | import ( |
| | | "bytes" |
| | | "fmt" |
| | | "io/ioutil" |
| | | "net/http" |
| | | "os/exec" |
| | | "time" |
| | | ) |
| | | |
| | | func main() { |
| | | |
| | | oldPeers := GetOldPeers() |
| | | fmt.Println("oldPeers: ", oldPeers) |
| | | newPeers := GetNewPeers() |
| | | fmt.Println("newPeers: ", newPeers) |
| | | UpdatePeers(oldPeers, newPeers) |
| | | time.Sleep(time.Second * 3) |
| | | nowPeers := GetOldPeers() |
| | | fmt.Println("nowPeers: ", nowPeers) |
| | | } |
| | | |
| | | func GetOldPeers() string { |
| | | str := "cat /opt/vasystem/seaweedfs_start.sh | grep peers=" |
| | | peers := RunScript(str) |
| | | return peers |
| | | } |
| | | |
| | | func GetNewPeers() string { |
| | | getUrl := "http://192.168.20.10:9200/basicfs/_search" |
| | | getJson := `{ |
| | | "query": { |
| | | "bool": { |
| | | "filter": [ |
| | | { |
| | | "term": { |
| | | "application":"nodeOperation" |
| | | } |
| | | } |
| | | ] |
| | | } |
| | | }, |
| | | "size": 1 |
| | | }` |
| | | |
| | | getRes, _ := EsReq("POST", getUrl, []byte(getJson)) |
| | | fmt.Println(getRes) |
| | | return "" |
| | | } |
| | | |
| | | func UpdatePeers(oldPeers string, newPeers string) { |
| | | str := "sed -ie 's/" + oldPeers + "/" + newPeers + "/g' /opt/vasystem/seaweedfs_start.sh" |
| | | RunScript(str) |
| | | } |
| | | |
| | | //脚本封装 |
| | | func RunScript(str string) string { |
| | | |
| | | cmd := exec.Command("sh", "-c", str) |
| | | var out bytes.Buffer |
| | | cmd.Stdout = &out |
| | | err := cmd.Run() |
| | | if err != nil { |
| | | return "运行失败" |
| | | } |
| | | return out.String() |
| | | } |
| | | |
| | | //解析http |
| | | func EsReq(method string, url string, parama []byte) (buf []byte, err error) { |
| | | timeout := time.Duration(10 * time.Second) |
| | | client := http.Client{ |
| | | Timeout: timeout, |
| | | } |
| | | request, err := http.NewRequest(method, url, bytes.NewBuffer(parama)) |
| | | request.Header.Set("Content-type", "application/json") |
| | | |
| | | if err != nil { |
| | | fmt.Println("build request fail !") |
| | | return nil, err |
| | | } |
| | | |
| | | resp, err := client.Do(request) |
| | | if err != nil { |
| | | fmt.Println("request error: ", err) |
| | | return nil, err |
| | | } |
| | | |
| | | defer resp.Body.Close() |
| | | body, err := ioutil.ReadAll(resp.Body) |
| | | if err != nil { |
| | | fmt.Println(err) |
| | | return nil, err |
| | | } |
| | | return body, nil |
| | | } |