#author("2018-05-14T23:35:50+09:00","","")
#author("2018-05-16T00:32:41+09:00","","")
#nofollow
#norelated
総数:&counter(total); 今日:&counter(today); 昨日:&counter(yesterday);

* もくじ [#jdfbcb90]

#contents


*準備 [#yc687361]
参考URL
[[proxy設定(ubuntu:16.04)>https://qiita.com/cad/items/a6c69ab34f9f0b39dcb4]]

**curl proxy設定 [#md05c42f]
 echo 'proxy = "http://[address]:[port]"' >> ~/.curlrc

参考URL
[[Rest_api>http://www.redmine.org/projects/redmine/wiki/Rest_api]]

*システム依存の変数定義 [#ref1e68a]
|ファイル名|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"


*定数定義 [#u490bce7]
|ファイル名|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]"

 readonly MAX_ISSUES="100"

*Listing projects [#dd9613a7]
|ファイル名|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}\""
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}&limit=${MAX_ISSUES}\""

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}&limit=${MAX_ISSUES}"
 
 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}

*Create issue [#mbf1dd2d]

|ファイル名|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}
 

*Showing a project [#a3980d97]
|ファイル名|redmine_show_a_project.sh|
|機能|idまたはidentifierで指定されたプロジェクトを取得する|
|使用方法| |
|使用例| |

 $ cat redmine_show_a_project.sh 
 #!/bin/bash
 
 # redmine_show_a_project.sh
 # idまたはidentifierで指定されたプロジェクトを取得する
 
 source redmine_system_oriented_variables.sh
 source redmine_const_variables.sh
 
 declare -i rval=0
 
 USAGE=`cat << EOS
 usage: $0 <project_id>|<project_identifier>
   example:
   <project_id>    : 76
   <project_identifier>: some-project
 EOS
 `
 if [ $# -ne 1 ]; then
 	echo "${USAGE}"
 	exit 1
 fi
 
 project_id="$1"
 
 HTTP_REQ_METHOD="GET"
 HTTP_REQ_URL="projects/${project_id}.xml"
 
 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}&limit=${MAX_ISSUES}\""
 
 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}&limit=${MAX_ISSUES}"
 
 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}





* ここからつづき [#x5b97480]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS