Go语言实现钉钉发送通知
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,package mainimport ( "bufio" "io" "fmt" "io/ioutil" "os/exec" "net/http" "os" "strin
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
惠普服务器显示英文无法启动
网络安全教育主题班会微课
软件开发仿真
数据库分布键查询
服务器机柜 导轨
网络安全相关的记录片
服务器 消息队列
华三系列网络技术认证证书
米哈游uid代表的服务器
内网网页找不到服务器
安全dns服务器作用
数据库技术方案
ios 与服务器交互
如何介绍公司软件开发能力
网络安全法要不要加书名号
服务器国内租国外ip
金蝶kis商贸版登录不上服务器
大学生网络安全知识简短
朗生网络技术西安有限公司
怎么把文件修改成数据库类型
炒股安全软件开发
ios我的世界服务器地址
蓝泰科技互联网数据中心电话
佛山4u服务器散热器批发商
数据库多媒体及安全选择题
广州互联网大会 与佳都科技
东营app软件开发系统
民警反诈网络安全宣传
网络安全制度管理
计算机网络技术专业英文简历