Forked from ysaotome/wget_api_client_for_niftycloud.sh
Last active
August 27, 2019 02:48
-
-
Save yasutakatou/f2be95663d70e23c0e0649187847cf68 to your computer and use it in GitHub Desktop.
ニフティクラウド(NiftyCloud)のREST APIをshellから叩く
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Wget Api Clinet for NiftyCloud | |
# 2012/01/03 @ysaotome + modify 2016/09/09 kato.yasutaka | |
#=============================================== | |
# Settings | |
#=============================================== | |
## 公開鍵 | |
ACCESS_KEY='XXXX' | |
## 秘密鍵 | |
SECRET_KEY='XXXX' | |
## APIエンドポイント | |
ENDPOINT_URL='https://east-1.cp.cloud.nifty.com/api/' | |
#=============================================== | |
## 環境変数の生成 | |
TIMESTAMP=$(date +%FT%T).$(printf '%03dZ' $(expr `date +%N` / 1000000)) CMD_OPENSSL=`which openssl` CMD_CURL=`which curl` SIGNATURE=$(echo -n $1${TIMESTAMP} | ${CMD_OPENSSL} dgst -sha1 -binary -hmac ${SECRET_KEY} | ${CMD_OPENSSL} base64) | |
#### 関数 | |
## URL用エンコード | |
urlencode () { | |
TMPSTR="" | |
while read -N 1 i;do \ | |
case "$i" in | |
! ) i="%21" ;; | |
# ) i="%23" ;; | |
$ ) i="%24" ;; | |
+ ) i="%2B" ;; | |
, ) i="%2C" ;; | |
- ) i="%2D" ;; | |
. ) i="%2E" ;; | |
/ ) i="%2F" ;; | |
: ) i="%3A" ;; | |
= ) i="%3D" ;; | |
@ ) i="%40" ;; | |
[ ) i="%5B" ;; | |
] ) i="%5D" ;; | |
^ ) i="%5E" ;; | |
_ ) i="%5F" ;; | |
~ ) i="%7E" ;; | |
\ ) i="%5C" ;; | |
esac | |
TMPSTR=${TMPSTR}${i};done < <(echo $1) | |
echo $TMPSTR | |
} | |
## APIリクエスト実行 | |
apirequest () { | |
$CMD_CURL ${ENDPOINT_URL}'?Action='$1'&AccessKeyId='${ACCESS_KEY}'&SignatureVersion=0&Timestamp='$(urlencode ${TIMESTAMP})'&Version='$(urlencode '1.8')'&Signature='$(urlencode ${SIGNATURE}) | |
} | |
apirequest $1 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
nkf無しで動作するようにしてみました。使い方は以下です。
・スクリプトをサーバーの/var/tmp等に配置し、chmodで実行許可を付ける
・コンパネの「IP許可設定削除 」からスクリプトを置いたサーバーのグローバルIPを許可する
・ニフティクラウドのREST APIのページを参考に「AccessKey/SecretAccessKeyの取得」を実施する
・入手したキー情報を スクリプトに反映します。またリージョンにあわせてエンドポイントも変更します。
設定例)
## 公開鍵
ACCESS_KEY='【コンパネにて取得したのAccessKeyへ書き換えてください】'
## 秘密鍵
SECRET_KEY='【コンパネにて取得したのSecretAccessKeyへ書き換えてください】'
## APIエンドポイント
ENDPOINT_URL='https://east-1.cp.cloud.nifty.com/api/'
http://cloud.nifty.com/api/endpoint.htmを参考に書き換えてください。
$ ./nifty-api.sh DescribeInstances
こんなふうに引数にAPIを指定して使います。