您好,登錄后才能下訂單哦!
package?main import?( ???"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.7 import?time import?hmac import?hashlib import?base64 import?urllib timestamp?=?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)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。