総数:15 今日:1 昨日:0
参考URL proxy設定(ubuntu:16.04)
echo 'proxy = "http://[address]:[port]"' >> ~/.curlrc
参考URL Rest_api
| ファイル名 | redmine_system_oriented_variables.sh |
$ cat redmine_system_oriented_variables.sh #!/bin/bash # redmine_system_oriented_variables.sh # システムに依存した変数の定義 readonly REDMINE_URL="http://192.168.3.26/redmine" readonly REDMINE_API_KEY="1fe9fda5bc2df59705e556bb5a4eb6b2c90e1767"
| ファイル名 | redmine_const_variables.sh |
$ cat redmine_const_variables.sh
#!/bin/bash
# redmine_const_variables.sh
# 定数の定義
readonly DIR_TEMP="temp"
if [ ! -d ${DIR_TEMP} ] ; then
mkdir ${DIR_TEMP}
fi
readonly FILE_HTTP_REQUEST_BODY="http_request_body.xml"
readonly PATH_HTTP_REQUEST_BODY="${DIR_TEMP}/${FILE_HTTP_REQUEST_BODY}"
readonly FILE_HTTP_RESPONSE_HEADER="http_response_header.txt"
readonly PATH_HTTP_RESPONSE_HEADER="${DIR_TEMP}/${FILE_HTTP_RESPONSE_HEADER}"
readonly FILE_HTTP_RESPONSE_BODY="http_response_body.xml"
readonly PATH_HTTP_RESPONSE_BODY="${DIR_TEMP}/${FILE_HTTP_RESPONSE_BODY}"
readonly HEADER_CONTENT_TYPE_TEXT_XML="Content-type: text/xml"
readonly REGEX_HTTP_STATUS_LINE="^HTTP\/1\.[0-9] \([0-9]\+\) .*"
readonly REGEX_HTTP_STATUS_SUCCESS="2[0-9][0-9]"
| ファイル名 | redmine_list_project.sh |
| 機能 | プロジェクトの一覧を取得する |
| 使用方法 | redmine_list_project.sh <redmine_url> <redmine_api_key> |
| 使用例 | ./redmine_list_projects.sh http://192.168.3.26/redmine 1fe9fda5bc2df59705e556bb5a4eb6b2c90e1767 |
$ cat redmine_list_projects.sh
#!/bin/bash
# redmine_list_project.sh
# プロジェクトの一覧を取得する
source redmine_system_oriented_variables.sh
source redmine_const_variables.sh
declare -i rval=0
HTTP_REQ_METHOD="GET"
HTTP_REQ_URL="projects.xml"
#USAGE=`cat << EOS
#usage: $0 <redmine_url> <redmine_api_key>
# example:
# <redmine_url> : http://192.168.3.26/redmine
# <redmine_api_key>: 1fe9fda5bc2df59705e556bb5a4eb6b2c90e1767
#EOS
#`
#if [ $# -lt 2 ]; then
# echo "${USAGE}"
# exit 1
#fi
echo "curl --dump-header ${PATH_HTTP_RESPONSE_HEADER} -o ${PATH_HTTP_RESPONSE_BODY} -H \"${HEADER_CONTENT_TYPE_TEXT_XML}\" -X ${HTTP_REQ_METHOD} \"${REDMINE_URL}/${HTTP_REQ_URL}?key=${REDMINE_API_KEY}\""
curl --dump-header ${PATH_HTTP_RESPONSE_HEADER} -o ${PATH_HTTP_RESPONSE_BODY} -H "${HEADER_CONTENT_TYPE_TEXT_XML}" -X ${HTTP_REQ_METHOD} "${REDMINE_URL}/${HTTP_REQ_URL}?key=${REDMINE_API_KEY}"
rval=$?
echo "result of curl: ${rval}"
if [ ${rval} -ne 0 ] ; then
echo "error: curl command failed."
exit 1
fi
echo "*********************"
echo " http_response_header.txt"
echo "*********************"
cat ${PATH_HTTP_RESPONSE_HEADER}
echo "*********************"
cat ${PATH_HTTP_RESPONSE_HEADER} | grep -e "${REGEX_HTTP_STATUS_LINE}"
rval=$?
if [ ${rval} -ne 0 ] ; then
echo "error: no http status codes found."
exit 1
fi
http_status_code=`cat ${PATH_HTTP_RESPONSE_HEADER} | grep -e "${REGEX_HTTP_STATUS_LINE}" | sed -e "s/${REGEX_HTTP_STATUS_LINE}/\1/"`
echo "http_status_code: ${http_status_code}"
echo "*********************"
echo " http_response_body.xml"
echo "*********************"
cat ${PATH_HTTP_RESPONSE_BODY}
echo "*********************"
echo "${http_status_code}" | grep -e "${REGEX_HTTP_STATUS_SUCCESS}"
rval=$?
if [ ${rval} -eq 0 ] ; then
echo "success: http_status_code is ${http_status_code}"
rval=0
else
echo "error: http_status_code is not 2XX"
rval=1
fi
exit ${rval}
| ファイル名 | redmine_create_issue.sh |
| 機能 | チケットの作成 |
| 使用方法 | redmine_create_issue.sh |
| 使用例 | ./redmine_create_issue.sh |
まだ編集中!!
$ cat redmine_create_issue.sh
#!/bin/sh
# redmine_create_issue.sh
# チケットを作成する
source ./redmine_system_oriented_variables.sh
source ./redmine_const_variables.sh
declare -i rval=0
HTTP_REQ_METHOD="POST"
HTTP_REQ_URL="issues.xml"
USAGE=`cat << EOS
usage: $0 <project_id> <tracker_id> <subject> <description_filename>
example:
<project_id>: 1
<tracker_id>: 2
<subject>: "QE91 Urban FOTA動作確認 SRCSW"
<description_filename>: description.txt
EOS
`
if [ $# -ne 4 ]; then
echo "${USAGE}"
exit 1
fi
project_id="$1"
# project_id の文字列長がゼロか
if [ ${#project_id} -eq 0 ] ; then
echo "error: no project_id is given."
exit 1
fi
# project_id は数字か
echo "${project_id}" | grep -e "[0-9]\+"
rval=$?
if [ ${rval} -ne 0 ] ; then
echo "error: project_id MUST be digit(s)"
exit 1
fi
tracker_id="$2"
# tracker_id の文字列長がゼロか
if [ ${#tracker_id} -eq 0 ] ; then
echo "error: no tracker_id is given."
exit 1
fi
# tracker_id は数字か
echo "${tracker_id}" | grep -e "[0-9]\+"
rval=$?
if [ ${rval} -ne 0 ] ; then
echo "error: tracker_id MUST be digit(s)"
exit 1
fi
subject="$3"
description_filename="$4"
# description_filename というファイルが存在するか
if [ ! -f ${description_filename} ] ; then
echo "error: specified description file \"${description_filename}\" is not found."
exit 1
fi
# description_filename というファイルが空か
declare -i file_size=0
file_size=`wc -c < ${description_filename}`
echo "${description_filename} file_size: ${file_size}"
if [ ${file_size} -lt 1 ] ; then
echo "error: specified description file is empty."
fi
echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" > ${PATH_HTTP_REQUEST_BODY}
echo "<issue>" >> ${PATH_HTTP_REQUEST_BODY}
echo "<project_id>${project_id}</project_id>" >> ${PATH_HTTP_REQUEST_BODY}
echo "<tracker_id>${tracker_id}</tracker_id>" >> ${PATH_HTTP_REQUEST_BODY}
echo "<subject>${subject}</subject>" >> ${PATH_HTTP_REQUEST_BODY}
echo "<description>" >> ${PATH_HTTP_REQUEST_BODY}
cat ${description_filename} >> ${PATH_HTTP_REQUEST_BODY}
echo "</description>" >> ${PATH_HTTP_REQUEST_BODY}
echo "</issue>" >> ${PATH_HTTP_REQUEST_BODY}
echo "*********************"
echo "content in ${PATH_HTTP_REQUEST_BODY}"
echo "*********************"
cat ${PATH_HTTP_REQUEST_BODY}
echo "*********************"
echo "curl -o ${PATH_HTTP_RESPONSE_BODY} -H \"${HEADER_CONTENT_TYPE_TEXT_XML}\" -X ${HTTP_REQ_METHOD} --data-binary \"@${PATH_HTTP_REQUEST_BODY}\" \"${REDMINE_URL}/${HTTP_REQ_URL}?key=${REDMINE_API_KEY}\""
curl -o ${PATH_HTTP_RESPONSE_BODY} -H "${HEADER_CONTENT_TYPE_TEXT_XML}" -X ${HTTP_REQ_METHOD} --data-binary "@${PATH_HTTP_REQUEST_BODY}" "${REDMINE_URL}/${HTTP_REQ_URL}?key=${REDMINE_API_KEY}"
rval=$?
echo "result of curl: ${rval}"
echo "*********************"
echo "HTTP response in ${PATH_HTTP_RESPONSE_BODY}"
echo "*********************"
cat ${PATH_HTTP_RESPONSE_BODY}
echo "*********************"
exit ${rval}