Go調用企業微信API發送zabbix告警信息腳本

package main import ( "bytes" "encoding/json" "io/ioutil" "net/http" "os" ) type JSON struct { Access_token string `json:"access_token"` } type MESSAGES struct { Touser string `json:"touser"` Toparty string `json:"toparty"` Msgtype string `json:"msgtype"` Agentid int `json:"agentid"` Text struct { //Subject string `json:"subject"` Content string `json:"content"` } `json:"text"` Safe int `json:"safe"` } func Get_AccessToken(corpid,corpsecret string) string { gettoken_url := "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + corpid + "&corpsecret=" + corpsecret //print(gettoken_url) client := &http.Client{} req, _ := client.Get(gettoken_url) defer req.Body.Close() body, _ := ioutil.ReadAll(req.Body) //fmt.Printf("\n%q",string(body)) var json_str JSON json.Unmarshal([]byte(body), &json_str) //fmt.Printf("\n%q",json_str.Access_token) return json_str.Access_token } func Send_Message(access_token,msg string) { send_url := "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + access_token //print(send_url) client := &http.Client{} req, _ := http.NewRequest("POST", send_url, bytes.NewBuffer([]byte(msg))) req.Header.Set("Content-Type", "application/json") req.Header.Set("charset","UTF-8") resp, err := client.Do(req) if err != nil { panic(err) } defer resp.Body.Close() //fmt.Println("response Status:", resp.Status) //body, _ := ioutil.ReadAll(resp.Body) //fmt.Println("response Body:", string(body)) } func messages(touser string,toparty string,agentid int,content string) string{ msg := MESSAGES{ Touser: touser, Toparty: toparty, Msgtype: "text", Agentid: agentid, Safe: 0, Text: struct { //Subject string `json:"subject"` Content string `json:"content"` }{Content: content}, } sed_msg, _ := json.Marshal(msg) //fmt.Printf("%s",string(sed_msg)) return string(sed_msg) } func main(){ touser := "BigBoss" //企業號中的用戶帳號,在zabbix用戶Media中配置,如果配置不正常,將按部門發送。 toparty := "2" //企業號中的部門id。 agentid:= 1000002 //企業號中的應用id。 corpid := "xxxxxxxxxxxxxxxxx" //企業號的標識 corpsecret := "exxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ///企業號中的應用的Secret access_token := Get_AccessToken(corpid,corpsecret) subject := os.Args[2] //獲取zabbix傳進來的第一個參數 content := subject + "\n" + os.Args[3] //獲取zabbix傳進來的第二個參數 msg := messages(touser,toparty,agentid,content) //fmt.Println(msg) Send_Message(access_token,msg) //fmt.Println("\n") }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章