From 7ce84b3d1e45d35c7c9f73561893039a05c16995 Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期五, 20 十二月 2019 19:38:18 +0800
Subject: [PATCH] fix unTargz
---
controllers/es.go | 598 ++++++++++++++++++++++++++++++++++++++++-------------------
1 files changed, 405 insertions(+), 193 deletions(-)
diff --git a/controllers/es.go b/controllers/es.go
index 18fe7cd..baed42b 100644
--- a/controllers/es.go
+++ b/controllers/es.go
@@ -1,213 +1,69 @@
package controllers
import (
+ "basic.com/valib/logger.git"
+ "bytes"
"encoding/json"
"fmt"
"github.com/gin-gonic/gin"
+ "math/rand"
+ "os/exec"
+ "strings"
+ "webserver/cache"
"webserver/extend/code"
- "webserver/extend/config"
"webserver/extend/esutil"
"webserver/extend/util"
"webserver/models"
"webserver/service"
- "math/rand"
- "strconv"
- "strings"
)
type EsController struct{}
+type EsManagementController struct{}
+
+type EsClusterInfo struct {
+ Ip string `json:"ip"`
+}
+
+// @Security ApiKeyAuth
// @Summary 姣斿鏁版嵁鏌ヨ
// @Description 姣斿鏁版嵁鏌ヨ
// @Accept json
// @Produce json
// @Tags es
// @Param reqMap body models.EsSearch true "collection 涓虹┖"
-// @Success 200 {string} json "{"code":200, msg:"鐩綍缁撴瀯鏁版嵁", success:true}"
-// @Failure 500 {string} json "{"code":500, msg:"杩斿洖閿欒淇℃伅", success:false}"
+// @Success 200 {string} json "{"code":200, msg:"", success:true}"
+// @Failure 500 {string} json "{"code":500, msg:"", success:false}"
// @Router /data/api-v/es/queryEsCompareData [POST]
func PostEsCompareData(c *gin.Context) {
searchBody := new(models.EsSearch)
- c.BindJSON(&searchBody)
- isEsSource := true
- databases := searchBody.DataBases
- page := searchBody.Page;if page <= 0 {page = 1}
- size := searchBody.Size;if size <= 0 {size = 8}
- from := (page - 1) * size
- to := page * size
- threshold := searchBody.Threshold;if threshold < 0 || threshold > 100 {threshold = 60}
- picUrl := searchBody.PicUrl
- /*feature := searchBody.Feature*/
- var featByte []byte;
- if len(picUrl) > 3 { // linux
- /*fileName := picUrl // picIp 瀹氫箟鍦� fileController weedfs 鏂囦欢鏈嶅姟鍣� 璁块棶 璺緞 鍓嶇紑
- detect := gorun.GetSimpleFaceDetect(fileName)
- if len(detect) != 1 {
- util.ResponseFormat(c,code.TooManyFeatureFindError,"鍥剧墖鐗瑰緛鍊艰繃澶�")
- return
- }else {
- featByte = detect[0]["feature"].([]byte)
- }*/ // linux
- }
- data := make(map[string]interface{})
- searchBody.Page = 1
- searchBody.Size = 15000
- //searchMap := Struct2Map(*searchBody)
- if len(databases) == 1 && databases[0] == "esData" {
- searchBody.IsAggs = false
- data = searchEsData(*searchBody)
- } else {
- isEsSource = false
- data = service.QueryDbPersonsForCompare(*searchBody)
- }
- sources := data["datalist"].([]interface{})
-
- if len(sources) > 0 {
- //杩涜姣斿
- sources = sourceCompare(sources, isEsSource, featByte, threshold)
- } else {
- fmt.Println("鏌ヨ鏉′欢涓嬫棤鏁版嵁 source 鏁版嵁涓虹┖锛�" + string(len(sources)))
- }
- dataLen := len(sources)
- if from > dataLen-1 {
- from = 0
- to = 0
- }
- if to > dataLen {
- to = dataLen
- }
- sources = sources[from:to] // 鏁版嵁 閮ㄥ垎鑾峰彇
- if !isEsSource { // 浜哄憳鏁版嵁瑕佸姞搴曞簱鍚嶇О
- for _, sou := range sources {
- tableId := sou.(map[string]interface{})["tableId"]
- if tableId != nil {
- info := QueryDbTableInfo(tableId.(string))
- if info["tableName"] != nil {sou.(map[string]interface{})["tableName"] = info["tableName"]
- }else {sou.(map[string]interface{})["tableName"] = "鍏朵粬"}
- if info["bwType"] != nil {sou.(map[string]interface{})["bwType"] = info["bwType"]
- }else {sou.(map[string]interface{})["bwType"] = "4"}
- }
- }
- }
- dmap := make(map[string]interface{},2)
- dmap["datalist"] = sources
- dmap["total"] = dataLen
- util.ResponseFormat(c, code.Success, dmap)
-}
-
-
-// @Summary 鏌ヨ鎽勫儚鏈轰互鍙婂惎绠楁硶
-// @Description 鍏宠仈鏌ヨ鎽勫儚鏈轰互鍙婂惎绠楁硶
-// @Produce json
-// @Tags camera
-// @Success 200 {string} json "{"code":200, success:true, msg:"璇锋眰澶勭悊鎴愬姛", data:"鎽勫儚鏈轰俊鎭�"}"
-// @Failure 500 {string} json "{"code":500, success:false msg:"",data:"閿欒淇℃伅鍐呭"}"
-// @Router /data/api-v/camera/queryCameraAndTaskInfo [get]
-func (ac *CameraController) QueryCameraAndTaskInfo(c *gin.Context) {
- var cam models.Camera
- rows := cam.FindAllCamTask()
-
- if len(rows) == 0 {
- util.ResponseFormat(c, code.ComError, "娌℃湁璁板綍")
+ err := c.BindJSON(&searchBody)
+ if err != nil || searchBody.PicUrl == "" || len(searchBody.DataBases) == 0 {
+ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎")
return
}
- camList := make([]map[string]interface{},0,5)
- for _, cam := range rows {
- newCam := make(map[string]interface{})
- newCam["cameraid"] = cam.Id
- newCam["rtspUrl"] = cam.Rtsp
- tasks := cam.CamTask
- taskList := make([]map[string]interface{},0)
- if tasks != nil {
- taskmap:= make(map[string]interface{})
- for _,task := range tasks {
- taskId := taskmap[task.Taskid]
- if taskId != nil {
- cameraTasks := taskmap[task.Taskid].([]models.CameraTask)
- cameraTasks = append(cameraTasks,task)
- taskmap[task.Taskid] = cameraTasks
- }else {
- cameraTasks := make([]models.CameraTask,0)
- taskmap[task.Taskid] = append(cameraTasks,task)
- }
- }
- for key, value := range taskmap {
- i := make(map[string]interface{})
- i["taskid"] = key
- i["sdklist"] = value
- taskList = append(taskList,i)
- }
+ if searchBody.CompareNum != "" {
+ //浜屾鎼滅储锛屼笉闇�瑕佸啀姣斿浜�
+ co := service.GetCompResultByNum(searchBody.CompareNum)
+ if co != nil {
+ //浜屾鎼滅储鍜屾帓搴�
+ twiceM := GetCompareDataTwice(co, searchBody)
+ util.ResponseFormat(c, code.Success, twiceM)
+ return
+ } else {
+ m := make(map[string]interface{}, 0)
+ m["compareNum"] = searchBody.CompareNum
+ m["total"] = 0
+ m["totalList"] = []CompareResult{}
+ util.ResponseFormat(c, code.CompareResultGone, m)
+ return
}
- newCam["tasklist"] = taskList
- camList = append(camList,newCam)
}
- c.JSON(200,camList)
-
-}
-
-func searchEsData(searchBody models.EsSearch) map[string]interface{} {
- //璇锋眰绱㈠紩
- index := config.EsInfo.EsIndex.VideoPersons.IndexName // wp鍙煡浜鸿劯鏁版嵁
- queryStr := "";
- queryBody := searchBody.InputValue
- //妫�绱㈡
- if queryBody != "" {
- queryStr = "\"must\":[{\"multi_match\":{\"query\":\"" + queryBody + "\",\"fields\":[\"tableName^1.5\",\"gender^2.0\",\"race^2.0\",\"content^1.0\",\"idcard^1.8\",\"picAddress^1.0\"]," +
- "\"type\":\"cross_fields\",\"operator\":\"OR\",\"slop\":0,\"prefix_length\":0,\"max_expansions\":50,\"zero_terms_query\":\"NONE\",\"auto_generate_synonyms_phrase_query\":true,\"fuzzy_transpositions\":true,\"boost\":1}}],"
- }
- gteDate := searchBody.SearchTime[0];lteDate := searchBody.SearchTime[1]
- //鍒ゆ柇浠诲姟ID
- taskIdStr := ""
- taskId := searchBody.Tasks
- if taskId != nil && len(taskId) > 0 {
- esTaskId := strings.Replace(strings.Trim(fmt.Sprint(taskId), "[]"), " ", "\",\"", -1)
- taskIdStr = "{\"terms\":{\"taskId\":[\"" + esTaskId + "\"]}},"
- }
- //鍒ゆ柇鎽勫儚鏈篒D
- videoReqNumStr := ""
- videoReqNum := searchBody.TreeNodes
- if videoReqNum != nil && len(videoReqNum) > 0 {
- esVideoReqNum := strings.Replace(strings.Trim(fmt.Sprint(videoReqNum), "[]"), " ", "\",\"", -1)
- videoReqNumStr = "{\"terms\":{\"videoReqNum\":[\"" + esVideoReqNum + "\"]}},"
- }
- //鍒ゆ柇搴撹〃ID
- tableId := searchBody.Tabs
- esTableId := ""
- esTableIdStr := ""
- if tableId != nil && len(tableId) > 0 {
- esTableId = strings.Replace(strings.Trim(fmt.Sprint(tableId), "[]"), " ", "\",\"", -1)
- esTableIdStr = "{\"terms\":{\"tableId\":[\"" + esTableId + "\"]}},"
- }
- collectionStr := ""
- collection := searchBody.Collection
- if collection != "" {
- collectionStr = "{\"term\":{\"collection\":\"" + collection + "\"}},"
- }
- webPage := searchBody.Page
- webSize := searchBody.Size
- from := (webPage - 1) * webSize
- esFrom := strconv.Itoa(from)
- esSize := strconv.Itoa(webSize)
- //浣跨敤es搴曞眰鏈哄埗澶勭悊鍒嗛〉
- //璇锋眰澶�
- url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
- "/" + index + "/_search?search_type=dfs_query_then_fetch"
- //璇锋眰浣�
- prama := "{\"from\":\"" + esFrom + "\",\"size\":\"" + esSize + "\"," +
-// prama := "{\"size\":\"0\"," +
- "\"query\":{\"bool\":{" + queryStr +
- "\"filter\":[" +
- videoReqNumStr +
- taskIdStr +
- collectionStr +
- esTableIdStr +
- "{\"range\":{\"picDate\":{\"from\":\"" + gteDate + "\",\"to\":\"" + lteDate + "\",\"include_lower\":true,\"include_upper\":true,\"boost\":1}}}]}}," +
- "\"sort\":[{\"_score\":{\"order\":\"desc\"}},{\"picDate\":{\"order\":\"desc\"}}]," +
- "\"_source\":[\"tableName\",\"gender\",\"race\",\"content\",\"IDCard\",\"picAddress\",\"picDate\",\"sdkType\",\"age\",\"personId\",\"personIsHub\",\"personPicUrl\",\"picLocalUrl\",\"picSmUrl\",\"videoIp\",\"videoNum\",\"videoReqNum\",\"baseInfo\"]}";
- fmt.Println(prama)
- //鏁版嵁瑙f瀽
- tokenRes := esutil.GetEsDataReq(url, prama, true)
- return tokenRes
+ m := make(map[string]interface{}, 0)
+ m["compareNum"] = searchBody.CompareNum
+ m["total"] = 0
+ m["totalList"] = []CompareResult{}
+ util.ResponseFormat(c, code.CompareResultGone, m)
}
@@ -232,15 +88,371 @@
return dataSource
}
-// type 杞� map
-func Struct2Map(obj interface{}) map[string]interface{} {
- var data = make(map[string]interface{})
- bytes, _ := json.Marshal(obj)
- json.Unmarshal(bytes, &data)
- /*t := reflect.TypeOf(obj)
- v := reflect.ValueOf(obj)
- for i := 0; i < t.NumField(); i++ {
- data[t.Field(i).Name] = v.Field(i).Interface()
- }*/
- return data
+// @Security ApiKeyAuth
+// @Summary 鏌ヨES闆嗙兢淇℃伅-鍏ュ彛
+// @Description 鏌ヨES闆嗙兢淇℃伅-鍏ュ彛
+// @Accept json
+// @Produce json
+// @Tags es
+// @Param obj body controllers.EsClusterInfo true "鏌ヨ闆嗙兢鍙傛暟"
+// @Success 200 {string} json "{"code":200, msg:"", success:true}"
+// @Failure 500 {string} json "{"code":500, msg:"", success:false}"
+// @Router /data/api-v/es/getEsClusterInfo [POST]
+func (em *EsManagementController) GetEsClusterInfo(c *gin.Context) {
+ var body EsClusterInfo
+ c.BindJSON(&body)
+ ip := body.Ip
+ serverIp := ""
+ if ip != "" {
+ serverIp = ip
+ } else {
+ localConf, err2 := cache.GetServerInfo()
+ if err2 != nil || localConf.ServerIp == "" {
+ logger.Debug("localConfig is wrong!!!")
+ util.ResponseFormat(c, code.QueryClusterInfoErr, err2)
+ return
+ }
+ serverIp = localConf.ServerIp
+ }
+ nodeInfos, err := getEsClusterInfors(serverIp)
+ if err != nil {
+ util.ResponseFormat(c, code.QueryClusterInfoErr, err)
+ return
+ }
+ util.ResponseFormat(c, code.Success, nodeInfos)
+}
+
+//鏌ヨES闆嗙兢淇℃伅-涓氬姟閫昏緫
+func getEsClusterInfors(ip string) ([]map[string]interface{}, error) {
+ str := "curl " + ip + ":9200/_cat/nodes?v"
+ cmd := exec.Command("sh", "-c", str)
+ var out bytes.Buffer
+ cmd.Stdout = &out
+ err := cmd.Run()
+ if err != nil {
+ return nil, err
+ }
+ infos := strings.Split(string(out.String()), "\n")
+ totalNodes := len(infos) - 1
+ var nodeInfos []map[string]interface{}
+ for i := 1; i < totalNodes; i++ {
+ nodeInfo := make(map[string]interface{})
+ context := strings.Fields(infos[i])
+ nodeIp := context[0]
+ Type := context[7]
+ var nodeType string
+ if Type == "mdi" {
+ nodeType = "涓昏妭鐐�"
+ }
+ if Type == "di" {
+ nodeType = "浠庤妭鐐�"
+ }
+ nodeInfo["ip"] = nodeIp
+ nodeInfo["nodeType"] = nodeType
+ url := "http://" + nodeIp + ":9200"
+ buf := esutil.HttpGet(url)
+ var info interface{}
+ json.Unmarshal(buf, &info)
+ tmpInfo := info.(map[string]interface{})
+ tmpName := tmpInfo["name"].(string)
+ versinInfo := tmpInfo["version"].(map[string]interface{})
+ buildDate := versinInfo["build_date"].(string)
+ nodeInfo["name"] = tmpName
+ nodeInfo["buildDate"] = buildDate
+ nodeInfos = append(nodeInfos, nodeInfo)
+ }
+ return nodeInfos, err
+}
+
+// @Security ApiKeyAuth
+// @Summary 鍒涘缓鑺傜偣
+// @Description 鍒涘缓鑺傜偣
+// @Accept json
+// @Produce json
+// @Tags es
+// @Success 200 {string} json "{"code":200, msg:"", success:true}"
+// @Failure 500 {string} json "{"code":500, msg:"", success:false}"
+// @Router /data/api-v/es/createNode [POST]
+func (em *EsManagementController) CreateNode(c *gin.Context) {
+ msg := "鍒涘缓鑺傜偣澶辫触锛岃鑱旂郴绠$悊鍛�"
+ str := "sh /opt/script/create_first_node.sh"
+ cmd := exec.Command("sh", "-c", str)
+ var out bytes.Buffer
+ cmd.Stdout = &out
+ err := cmd.Run()
+ if err != nil {
+
+ }
+ infos := strings.Split(string(out.String()), "\n")[0]
+ if infos == "鏈嶅姟鍚姩鎴愬姛" {
+ msg = "鍒涘缓鑺傜偣鎴愬姛"
+ util.ResponseFormat(c, code.Success, msg)
+ return
+ }
+ util.ResponseFormat(c, code.CreateFirstNodeErr, msg)
+}
+
+// @Security ApiKeyAuth
+// @Summary 鍔犲叆闆嗙兢
+// @Description 鍔犲叆闆嗙兢
+// @Accept json
+// @Produce json
+// @Tags es
+// @Param obj body controllers.AddCluster true "鍔犲叆闆嗙兢鍙傛暟"
+// @Success 200 {string} json "{"code":200, msg:"", success:true}"
+// @Failure 500 {string} json "{"code":500, msg:"", success:false}"
+// @Router /data/api-v/es/addCluster [POST]
+func (em *EsManagementController) AddCluster(c *gin.Context) {
+ var ac AddCluster
+ err := c.BindJSON(&ac)
+ if err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎")
+ return
+ }
+ str := "sh /opt/script/add_cluster.sh " + ac.Option + ""
+ if ac.Option == "1" {
+ info, err := updateUnicastHosts(ac.Ip)
+ if err != nil || info == false {
+ util.ResponseFormat(c, code.QueryClusterInfoErr, err)
+ return
+ }
+ if info == true {
+ info := runScript(str)
+ if info == "杩愯澶辫触" {
+ util.ResponseFormat(c, code.AddClusterInfoErr, info)
+ return
+ }
+ }
+ }
+ if ac.Option == "2" {
+ info, err := updateUnicastHosts(ac.Ip)
+ if err != nil || info == false {
+ util.ResponseFormat(c, code.QueryClusterInfoErr, err)
+ return
+ }
+ if info == true {
+ info := runScript(str)
+ if info == "杩愯澶辫触" {
+ util.ResponseFormat(c, code.AddClusterInfoErr, info)
+ return
+ }
+ }
+ } else {
+ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎")
+ return
+ }
+ util.ResponseFormat(c, code.Success, "鍔犲叆鎴愬姛")
+}
+
+//鑴氭湰灏佽
+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()
+}
+
+type AddCluster struct {
+ Ip string `json:"ip"` //闆嗙兢IP
+ Option string `json:option` //鑺傜偣绫诲瀷
+}
+
+//鏇存柊缁勬挱鍒楄〃
+func updateUnicastHosts(host string) (bool, error) {
+ nodeInfos, err := getEsClusterInfors(host)
+ if err != nil {
+ return false, err
+ }
+ var hosts []string
+ for _, val := range nodeInfos {
+ nodeType := val["nodeType"].(string)
+ if nodeType == "涓昏妭鐐�" {
+ ip := val["ip"].(string)
+ hosts = append(hosts, ip)
+ }
+ }
+ msg := false
+ for i, val := range hosts {
+ val = val + ":9300"
+ hosts[i] = val
+ }
+ verificationHosts := "[\"" + strings.Replace(strings.Trim(fmt.Sprint(hosts), "[]"), " ", "\",\"", -1) + "\"]"
+ for i, val := range hosts {
+ val = "\\\"" + val + "\\\""
+ hosts[i] = val
+ }
+ oldUnicastHost := "\\[\\\"0.0.0.0:9300\\\"\\]"
+ newUnicastHost := strings.Replace(strings.Trim(fmt.Sprint(hosts), ""), " ", ",", -1)
+ str := "sed -ie 's/discovery.zen.ping.unicast.hosts: " + oldUnicastHost + "/discovery.zen.ping.unicast.hosts: " + newUnicastHost + "/g' /opt/elasticsearch/config/elasticsearch.yml"
+ fmt.Println(str)
+ cmd := exec.Command("sh", "-c", str)
+ var out bytes.Buffer
+ cmd.Stdout = &out
+ err1 := cmd.Run()
+ if err1 != nil {
+ return false, err
+ }
+ res := getUnicastHosts()
+ fmt.Println("res: ", res)
+ res1 := "discovery.zen.ping.unicast.hosts: " + verificationHosts + ""
+ fmt.Println("res1: ", res1)
+ if res == res1 {
+ msg = true
+ }
+ return msg, err
+}
+
+//淇敼elasticsearch.yml鏄犲皠鏂囦欢
+// @Security ApiKeyAuth
+// @Summary 淇敼es闆嗙兢Ip
+// @Description 淇敼es闆嗙兢Ip
+// @Accept json
+// @Produce json
+// @Tags es
+// @Param obj body controllers.Hosts true "淇敼es闆嗙兢Ip鍙傛暟"
+// @Success 200 {string} json "{"code":200, msg:"", success:true}"
+// @Failure 500 {string} json "{"code":500, msg:"", success:false}"
+// @Router /data/api-v/es/updateEsHosts [POST]
+func (em *EsManagementController) UpdateEsHosts(c *gin.Context) {
+ flag := "淇敼鎴愬姛"
+ var hosts Hosts
+ c.BindJSON(&hosts)
+ nodeInfos, err := getEsClusterInfors(hosts.OldIp)
+ var nodeType string
+ if err != nil {
+ logger.Fatal(err)
+ util.ResponseFormat(c, code.QueryClusterInfoErr, err)
+ }
+ newMasterHosts := make([]string, 0)
+ allHosts := make([]string, 0)
+ for _, val := range nodeInfos {
+ ip := val["ip"].(string)
+ tmpType := val["nodeType"].(string)
+ if ip == hosts.OldIp {
+ nodeType = tmpType
+ }
+ if tmpType == "涓昏妭鐐�" {
+ newMasterHosts = append(newMasterHosts, ip)
+ }
+ if ip != hosts.OldIp {
+ allHosts = append(allHosts, ip)
+ }
+ }
+
+ if nodeType == "涓昏妭鐐�" {
+ str1 := "sed -ie 's/network.host: " + hosts.OldIp + "/network.host: " + hosts.NewIp + "/g' /opt/elasticsearch/config/elasticsearch.yml"
+ msg1 := runScript(str1)
+ if msg1 == "杩愯澶辫触" {
+ flag = "淇敼閰嶇疆鏂囦欢澶辫触"
+ }
+ for i, host := range newMasterHosts {
+ if host == hosts.OldIp {
+ newMasterHosts[i] = hosts.NewIp
+ }
+ }
+ for i, val := range newMasterHosts {
+ val = "\\\"" + val + ":9300\\\""
+ newMasterHosts[i] = val
+ }
+ newUnicastHost := strings.Replace(strings.Trim(fmt.Sprint(newMasterHosts), ""), " ", ",", -1)
+
+ tmpStr := "cat /opt/elasticsearch/config/elasticsearch.yml | grep discovery.zen.ping.unicast.hosts:"
+ rs := runScript(tmpStr)
+ ts := strings.Split(rs, "\n")[0]
+ ots := strings.Split(ts, " ")[1]
+ outs := strings.Replace(ots, "\"", "\\\"", -1)
+ oldUnicastHost := "\\" + strings.Replace(outs, "]", "\\]", -1)
+ str2 := "sed -ie 's/discovery.zen.ping.unicast.hosts: " + oldUnicastHost + "/discovery.zen.ping.unicast.hosts: " + newUnicastHost + "/g' /opt/elasticsearch/config/elasticsearch.yml"
+ msg2 := runScript(str2)
+ if msg2 == "杩愯澶辫触" {
+ flag = "淇敼閰嶇疆鏂囦欢澶辫触"
+ }
+ for _, host := range allHosts {
+ str3 := "sshpass -p \"123\" ssh basic@" + host + " \"cd /opt/elasticsearch/config ; " + str2 + " ; cat elasticsearch.yml\""
+ msg := runScript(str3)
+ if msg == "杩愯澶辫触" {
+ flag = "淇敼閰嶇疆鏂囦欢澶辫触"
+ }
+ }
+ } else {
+ str1 := "sed -ie 's/network.host: " + hosts.OldIp + "/network.host: " + hosts.NewIp + "/g' /opt/elasticsearch/config/elasticsearch.yml"
+ msg1 := runScript(str1)
+ if msg1 == "杩愯澶辫触" {
+ flag = "淇敼閰嶇疆鏂囦欢澶辫触"
+ }
+ }
+ if flag == "淇敼閰嶇疆鏂囦欢澶辫触" {
+ util.ResponseFormat(c, code.UpdateFail, flag)
+ }
+ util.ResponseFormat(c, code.Success, flag)
+
+}
+
+type Hosts struct {
+ NewIp string `json:newIp`
+ OldIp string `json:oldIp`
+}
+
+func forwardCommand() {
+
+}
+
+//func AddEsCluster(hosts []string) (string){
+// msg := "鍔犲叆澶辫触"
+// for i,val := range hosts{
+// val =val+":9300"
+// hosts[i] = val
+// }
+// verificationHosts := "[\""+strings.Replace(strings.Trim(fmt.Sprint(hosts), "[]"), " ", "\",\"", -1)+"\"]"
+// for i,val := range hosts{
+// val ="\\\""+val+"\\\""
+// hosts[i] = val
+// }
+// oldUnicastHost := "\\[\\\"0.0.0.0:9300\\\"\\]"
+// newUnicastHost := strings.Replace(strings.Trim(fmt.Sprint(hosts), ""), " ", ",", -1)
+// str := "sed -ie 's/discovery.zen.ping.unicast.hosts: "+oldUnicastHost+"/discovery.zen.ping.unicast.hosts: "+newUnicastHost+"/g' /opt/elasticsearch/config/elasticsearch.yml"
+// fmt.Println(str)
+// cmd := exec.Command("sh","-c",str)
+// var out bytes.Buffer
+// cmd.Stdout = &out
+// err := cmd.Run()
+// if err != nil {
+//
+// }
+// res := getUnicastHosts()
+// fmt.Println("res: ",res)
+// res1 := "discovery.zen.ping.unicast.hosts: "+verificationHosts+""
+// fmt.Println("res1: ",res1)
+// if res == res1{
+// msg = "鍔犲叆鎴愬姛"
+// }
+// str2 := "echo \"node.master: true\" >> /opt/elasticsearch/config/elasticsearch.yml"
+// cmd2 := exec.Command("sh","-c",str2)
+// var out2 bytes.Buffer
+// cmd2.Stdout = &out2
+// err2 := cmd2.Run()
+// if err2 != nil {
+// msg = "鍔犲叆澶辫触"
+// }
+// return msg
+//
+//}
+
+func getUnicastHosts() string {
+ str := "cat /opt/elasticsearch/config/elasticsearch.yml | grep discovery.zen.ping.unicast.hosts:"
+ cmd := exec.Command("sh", "-c", str)
+ var out bytes.Buffer
+ cmd.Stdout = &out
+ err := cmd.Run()
+ if err != nil {
+
+ }
+ infos := strings.Split(string(out.String()), "\n")[0]
+ return infos
+
}
--
Gitblit v1.8.0