Go语言实现钉钉发送通知
具体代码如下所示:
packagemain import( "bufio" "io" "fmt" "io/ioutil" "os/exec" "net/http" "os" "strings" ) funcGetKey()(timestampstring,signstring,errerror){ cmd:=exec.Command("/bin/python","/application/scripts/hezhong_host_status/aaa.py") stdout,err:=cmd.StdoutPipe() iferr!=nil{ fmt.Println("Error:cannotobtainstdoutpipeforcommand:%s\n",err) returntimestamp,sign,err } iferr:=cmd.Start();err!=nil{ fmt.Println("Error:Thecommandiserr",err) returntimestamp,sign,err } varKey[]string //读取所有输出 bytes:=bufio.NewReader(stdout) for{ line,err:=bytes.ReadString('\n') iferr==io.EOF{ break } iferr!=nil{ fmt.Println("ReadErr:",err) } Key=append(Key,line) } iferr:=cmd.Wait();err!=nil{ fmt.Println("Wait",err.Error()) returntimestamp,sign,err } timestamp=Key[0] sign=Key[1] returntimestamp,sign,nil } funcSendDingMsg(msgstring){ //请求地址模板 timestamp,sign,err:=GetKey() iferr!=nil{ fmt.Println("GetKeyErr:",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)) iferr!=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) //关闭请求 deferresp.Body.Close() fmt.Println(resp.StatusCode) body,_:=ioutil.ReadAll(resp.Body) fmt.Println(string(body)) iferr!=nil{ fmt.Println("handleerror") } } funcmain(){ SendDingMsg(os.Args[1]) }
辅助Python脚本:
#!python2.7 importtime importhmac importhashlib importbase64 importurllib timestamp=long(round(time.time()*1000)) secret='thisissecret' 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)
总结
以上所述是小编给大家介绍的Go语言实现钉钉发送通知,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。