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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。