· 4 years ago · Aug 24, 2021, 01:26 PM
1#!/bin/bash
2
3SECRET_ID='AKID5uz36gjcrGf5Bc58eyb2C28ck9l8V9e96ahG'
4SECRET_KEY='hx5Ow8b0aFh89a3msx3kK0wQpy3e3d6cbrf7aeu0'
5
6URL='https://service-luw9f8p1-1253744379.sh.apigw.tencentcs.com/release/pool_automation_v1'
7HOST=$(echo "${URL}" | awk -F "/" '{print $3}')
8SOURCE='poolautomation'
9DATETIME=$(date -u "+%a, %d %b %Y %H:%M:%S GMT")
10HEADER=/tmp/header.txt
11BODY_JSON=/tmp/body.json
12
13function auto_sign() {
14 local SECRET_ID=$1
15 local SECRET_KEY=$2
16 local SOURCE=$3
17 local DATETIME=$4
18
19 local ALGORITHM='hmac-sha1'
20 local AUTH="hmac id=\"${SECRET_ID}\", algorithm=\"${ALGORITHM}\", headers=\"date source\", signature=\""
21 local SIGNSTR=$(echo -e "date: ${DATETIME}\\nsource: ${SOURCE}")
22 local SIGN=$(echo -n "${SIGNSTR}" | openssl dgst -hmac "${SECRET_KEY}" -sha1 -binary | base64)
23 local SIGN=$(echo -n "${AUTH}${SIGN}\"")
24 echo "${SIGN}"
25}
26
27function header() {
28 local SECRET_ID=$1
29 local SECRET_KEY=$2
30 local SOURCE=$3
31 local DATETIME=$4
32 local HEADER=$5
33
34 cat > ${HEADER} <<EOF
35Host: ${HOST}
36Content-Type: application/json; charset=utf-8
37X-Requested-With: XMLHttpRequest
38User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36
39Accept-Encoding: gzip, deflate, sdch,
40Accept-Language: zh-CN,zh;q=0.8,ja;q=0.6
41EOF
42
43 echo -e Authorization: $(auto_sign "${SECRET_ID}" "${SECRET_KEY}" "${SOURCE}" "${DATETIME}") >> ${HEADER}
44 echo -e Source: "${SOURCE}" >>${HEADER}
45 echo -e Date: "${DATETIME}" >>${HEADER}
46}
47
48function body() {
49 local ACTION=$1
50 local BODY_JSON=$2
51 echo -e "{\"start\": \"${ACTION}\"}" \
52 >${BODY_JSON}
53}
54
55header "${SECRET_ID}" "${SECRET_KEY}" "${SOURCE}" "${DATETIME}" "${HEADER}"
56body 'execution' "${BODY_JSON}"
57
58curl --connect-timeout 2 -m 4 -s -i -v -H @${HEADER} -d @${BODY_JSON} ${URL}
59rm -f ${HEADER}
60rm -f ${BODY_JSON}