package main
import (
"bytes"
"fmt"
"io"
"net/http"
"os"
"time"
"github.com/bytedance/sonic"
)
var (
subject, message, webHook, is_all, user_phone string
)
type Text struct {
Content string `json:"content"`
MentionedList []string `json:"mentioned_list"`
MentionedMobileList []string `json:"mentioned_mobile_list"`
}
func NewText(cont string) *Text {
return &Text{
Content: cont,
MentionedList: []string{},
MentionedMobileList: []string{},
}
}
type TextMessage struct {
MsgType string `json:"msgtype"`
Text *Text `json:"text"`
}
func NewTextMessage(txt *Text) *TextMessage {
return &TextMessage{
MsgType: "text",
Text: txt,
}
}
func main() {
// fmt.Println(len(os.Args))
if len(os.Args) == 6 {
subject = os.Args[1]
message = os.Args[2]
webHook = os.Args[3]
is_all = os.Args[4]
user_phone = os.Args[5]
} else {
fmt.Println("参数不足")
return
}
// fmt.Printf("第一个参数: %s\n", subject)
// fmt.Printf("第二个参数: %s\n", message)
// fmt.Printf("第三个参数: %s\n", webHook)
// fmt.Printf("第四个参数: %s\n", is_all)
// fmt.Printf("第五个参数: %s\n", user_phone)
cont := subject + "\n" + message
txt := NewText(cont)
if is_all == "true" {
txt.MentionedList = append(txt.MentionedList, "@all")
} else {
txt.MentionedMobileList = append(txt.MentionedMobileList, user_phone)
}
tmsg := NewTextMessage(txt)
msg, err := sonic.Marshal(tmsg)
if err != nil {
fmt.Println(err.Error())
return
}
//创建请求
request, err := http.NewRequest("POST", webHook, bytes.NewReader(msg))
if err != nil {
fmt.Println(err)
return
}
//设置header
request.Header.Add("Content-Type", "application/json")
//新建客户端
cli := http.Client{
//设置客户端超时时长
Timeout: 2 * time.Second,
}
//客户端发起请求
resp, err := cli.Do(request)
if err != nil {
fmt.Println(err)
return
}
defer resp.Body.Close()
fmt.Println(resp.StatusCode)
io.Copy(os.Stdout, resp.Body)
}
go编写zabbix企业微信媒介脚本
发布时间 2023-07-11 17:39:35作者: 厚礼蝎