언어 못 알림을 보낼 이동

메인 패키지

수입 (
   "bufio"
   "IO"
   "FMT"
   "IO / ioutil"
   "OS / 간부"
   "그물 / HTTP"
   "OS"
   "문자열"
)

FUNC하는 getKey () (소인 문자열, 기호 문자열, 오류 잘못) {
   명령 : = exec.Command ( "/ 빈 / 파이썬", "/application/scripts/hezhong_host_status/aaa.py")
   표준 출력, ERR = cmd.StdoutPipe ()
   잘못을하면! = nil이 {
      fmt.Println ( "오류 : 명령 파이프 표준 출력을 얻을 수 없다 : S % \ 않음"을 ERR)
      ERR, 서명, 타임 스탬프를 반환
   }


   만약 ERR = cmd.Start (); ERR! = 전무 {
      fmt.Println ( "오류 : 명령이 잘못되어"ERR)
      ERR, 서명, 타임 스탬프를 반환
   }

   이었다 키 [] 문자열
   모든 출력을 읽을 //
   바이트 = bufio.NewReader (표준 출력)
   에 대한 {
      라인 ERR = bytes.ReadString ( '\ n')에
      경우 ERR == io.EOF {
         단절
      }
      잘못을하면! = nil이 {
         fmt.Println는 ( "잘못 읽기", ERR)
      }
      키 = APPEND (키, 선)
   }


   ERR가있는 경우 :! = cmd.Wait은 (); 잘못 = 전무 {
      fmt.Println ( "대기", err.Error ())
      ERR, 서명, 타임 스탬프를 반환
   }

   소인 키 = [0]
   서명 키 = [1]
   반환 타임 스탬프, 로그인, 전무
}

FUNC SendDingMsg (MSG 문자열) {
   // 요청 주소 템플릿

   타임 스탬프, 로그인, ERR : =하는 getKey ()
   잘못을하면! = nil이 {
      fmt.Println는 ( "키 ERR 받기", ERR)
   }
   타임 스탬프 = strings.TrimRight ( "n \"소인)
   ( "N \"기호) = strings.TrimRight 서명
   // 타임 스탬프 :. = time.Now () UnixNano () / 1E6
   // 타임 스탬프 : = INT64 (1572870805748)
   서명 // : = "oJ5SHD3IwCWVIcL78k3pgX0tfQnjDfcDZMPXAI % 2BvrFE % 3D"
   은 webhook = "https://oapi.dingtalk.com/robot/send?access_token=628d11124aef5f9efe2a8c8a6b5afa2b67ab01dxxxxxxxxxxxxxxxxxxxxx&"+"타임 스탬프 = "+ 타임 스탬프 +"& 서명 = "+ 기호
   내용 : =`{ "MSGTYPE": "텍스트",
      "텍스트": { "내용": "`+ MSG +`"},
                "에서": {
                     "atMobiles"[
                         "18301371817"
                     ],
                     "isAtAll"사실
                }
   }`
   요청을 만들기 //
   REQ, ERR = http.NewRequest ( "POST"은 webhook, strings.NewReader (콘텐츠))
   잘못을하면! = nil이 {
      fmt.Println (ERR)
   }
   클라이언트 : = http.Client {}
   // 요청 헤더를 설정
   req.Header.Set ( "Content-Type을", "응용 프로그램 / JSON")
   req.Header.Set ( "사용자 에이전트", "파이어 폭스")
   요청을 보내 //
   RESP, ERR = client.Do (REQ)
   // 종료 요청
   ) (resp.Body.Close을 연기
   fmt.Println (resp.StatusCode)
   바디 _ = ioutil.ReadAll (resp.Body)
   fmt.Println (문자열 (몸))
   잘못을하면! = nil이 {
      fmt.Println ( "핸들 오류")
   }
}


FUNC 메인 () {
   SendDingMsg (os.Args [1])
}

보조 파이썬 스크립트 :

#! 파이썬 2.7
수입 시간
수입 HMAC
수입 hashlib
수입 base64로
수입 URLLIB
타임 스탬프 = 길이 (라운드 (로 time.time () * 1000))
비밀 = '이것은 비밀'
secret_enc = 바이트 (비밀) 함수 .encode ( "UTF-8")
string_to_sign = "{} \ {N}. 형식 (소인 비밀)
string_to_sign_enc = 바이트 (string_to_sign) 함수 .encode ( "UTF-8")
hmac_code = hmac.new (secret_enc, string_to_sign_enc, digestmod = hashlib.sha256) .digest ()
기호 = urllib.quote_plus (base64.b64encode (hmac_code))
인쇄 (타임 스탬프)
print(sign)




추천

출처blog.51cto.com/dellinger/2447790