Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save yasutakatou/f2be95663d70e23c0e0649187847cf68 to your computer and use it in GitHub Desktop.
Save yasutakatou/f2be95663d70e23c0e0649187847cf68 to your computer and use it in GitHub Desktop.
ニフティクラウド(NiftyCloud)のREST APIをshellから叩く
#!/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
@yasutakatou
Copy link
Author

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を指定して使います。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment