Go语言实现钉钉发送通知
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,package mainimport ( "bufio" "io" "fmt" "io/ioutil" "os/exec" "net/http" "os" "strin
千家信息网最后更新 2026年11月01日Go语言实现钉钉发送通知
package mainimport ( "bufio" "io" "fmt" "io/ioutil" "os/exec" "net/http" "os" "strings")func GetKey() (timestamp string ,sign string, err error){ cmd := exec.Command("/bin/python", "/application/scripts/hezhong_host_status/aaa.py") stdout , err := cmd.StdoutPipe() if err != nil { fmt.Println("Error:can not obtain stdout pipe for command:%s \n", err) return timestamp , sign, err } if err := cmd.Start() ; err != nil { fmt.Println("Error:The command is err ",err) return timestamp, sign,err } var Key []string //读取所有输出 bytes := bufio.NewReader(stdout) for { line ,err:= bytes.ReadString('\n') if err == io.EOF{ break } if err != nil { fmt.Println("Read Err:",err) } Key = append(Key,line) } if err := cmd.Wait();err!= nil{ fmt.Println("Wait",err.Error()) return timestamp, sign ,err } timestamp = Key[0] sign = Key[1] return timestamp ,sign ,nil}func SendDingMsg(msg string) { //请求地址模板 timestamp , sign , err := GetKey() if err != nil { fmt.Println("Get Key Err:",err) } timestamp = strings.TrimRight(timestamp, "\n") sign = strings.TrimRight(sign, "\n") //timestamp := time.Now().UnixNano() / 1e6 //timestamp := int64(1572870805748) //sign := "oJ5SHD3IwCWVIcL78k3pgX0tfQnjDfcDZMPXAI%2BvrFE%3D" webHook := "https://oapi.dingtalk.com/robot/send?access_token=628d11124aef5f9efe2a8c8a6b5afa2b67ab01dxxxxxxxxxxxxxxxxxxxxx&"+ "timestamp=" + timestamp + "&sign=" + sign content := `{"msgtype": "text", "text": {"content": "`+ msg + `"}, "at": { "atMobiles": [ "18301371817" ], "isAtAll": true } }` //创建一个请求 req, err := http.NewRequest("POST", webHook, strings.NewReader(content)) if err != nil { fmt.Println(err) } client := &http.Client{} //设置请求头 req.Header.Set("Content-Type", "application/json") req.Header.Set("User-agent","firefox") //发送请求 resp, err := client.Do(req) //关闭请求 defer resp.Body.Close() fmt.Println(resp.StatusCode) body,_ := ioutil.ReadAll(resp.Body) fmt.Println(string(body)) if err != nil { fmt.Println("handle error") }}func main(){ SendDingMsg(os.Args[1])}辅助Python脚本:
#!python 2.7import timeimport hmacimport hashlibimport base64import urllibtimestamp = long(round(time.time() * 1000))secret = 'this is secret'secret_enc = bytes(secret).encode('utf-8')string_to_sign = '{}\n{}'.format(timestamp, secret)string_to_sign_enc = bytes(string_to_sign).encode('utf-8')hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()sign = urllib.quote_plus(base64.b64encode(hmac_code))print(timestamp)print(sign)
地址
模板
脚本
辅助
输出
语言
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网金融科技
互联网科技公司起名
互联网科技公司的优势
互联网属科技
科技与互联网发展
互联网科技革命
未来的互联网科技
西安互联网科技公司
科技互联网创业计划书
隆华科技工业互联网
互联网教育科技公司vipkid
承德科技产业互联网发展
互联网时代科技改变生活
黑科技闪耀互联网之光
互联网科技商业
皮皮虾互联网科技有限公司
科技互联网经济论坛
米泉互联网科技专业怎么样
互联网金融金融科技
颐高云石互联网科技
上海挚品互联网科技有限公司
新华互联网科技
互联网最新的科技有限公司
互联网科技英文
互联网科技的英文
撒么互联网科技公司
岳阳华臻互联网科技有限公司
花神(南京)互联网科技有限公司
领航科技大厦互联网公司
保山互联网科技靠谱吗