はじめに
Commvault では REST API による操作が可能です。
REST API のエンドポイントは CommServe ではなく Web Server になるので、REST API を使用するには Web Server のインストールが必要です。
Commvault の REST API 各コマンドの詳細は https://api.commvault.com/ を参照してください。
ログインおよびトークンの取得
手順 1) パスワードの Base64 エンコード文字列の取得
REST API でログインするときには、パスワードは Base64 エンコードされた文字列で渡す必要があります。
Linux であれば base64 コマンド等で生成することができます。
コマンド
echo -n password | base64
実行結果
# echo -n Password#123! | base64
UGFzc3dvcmQjMTIzIQ==
手順 2) ログイン
手順 1) で取得した Base64 エンコード文字列を使用して、ログインします。
コマンド
curl --location --request POST 'http://webserver/webconsole/api/Login' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
-d '{"username":"cvuser01", "password":"UGFzc3dvcmQjMTIzIQ=="}' \
実行結果 (json.tool を使用して整形しています)
# curl --location --request POST 'http://webserver/webconsole/api/Login' \
> --header 'Accept: application/json' \
> --header 'Content-Type: application/json' \
> -d '{"username":"cvuser01", "password":"UGFzc3dvcmQjMTIzIQ=="}' \
> | python -m json.tool
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1197 100 1139 100 58 7084 360 --:--:-- --:--:-- --:--:-- 7118
{
"additionalResp": {
"nameValues": [
{
"name": "USERNAME",
"value": "cvuser01"
}
]
},
"aliasName": "4",
"capability": 4328650366975,
"ccn": 0,
"errList": [],
"forcePasswordChange": false,
"isAccountLocked": false,
"loginAttempts": 0,
"ownerOrganization": {
"GUID": "95189d4e-4a7f-4cb3-969f-80d5871ac13f",
"providerDomainName": "Commcell",
"providerId": 0
},
"providerOrganization": {
"GUID": "95189d4e-4a7f-4cb3-969f-80d5871ac13f",
"providerDomainName": "Commcell",
"providerId": 0
},
"providerType": 1,
"remainingLockTime": 0,
"smtpAddress": "foo@bar.com",
"token": "QSDK 314187d6720cd125e92872bb9a34eb8ebb7b599c27157194f2d3cc6fec36fd313ff029d7b9865bbc83989a8ec7340653f0f10f8f3714e1ae6d4e260ba921913d1285979cb026b788789bd071b4a21091888c6b055272bd485225c5baacf97ea48739c594b2ebd8badeae8a5373be023f36a89f3a1cd25b63d0410a3a2cccffad1d4f9e82a11911b6dcf152071082671d98020a11cec41adc4bde60d207fd22dddaf1eb793f93589e7ce509933023999cf51a91010d2cb0665508287fc9c62b0939f821bc90b683baa4d41fc3d1a2fe1ac6abd802fb54e2449dc29d82fac6c89973dd973c406176bd264d82a50b70fc4aae56bca5a1edc0f0a10f7fceff8ef4e5d19b459d7f87d8873",
"userGUID": "FF0AF463-2E34-45A1-8982-B18B93ECA6A1",
"userName": "cvuser01"
}
#
ログインに成功すれば、トークン (QSDK ...) が表示されるで、以降の操作はこのトークンを使用します。
ログイン後の操作
ヘッダー部に Authtoken を指定して各コマンドを実行します。
例として GetId コマンドを実行します。GetId コマンドはクライアント名からそのクライアントの内部 ID を取得するためのコマンドです。
コマンド
curl --location --request GET 'http://10.1.0.32/webconsole/api/GetId?clientname=commserve' \
--header 'Accept: application/json' \
--header 'Authtoken: QSDK token'
実行例 (json.tool を使用して整形しています)
# curl --location --request GET 'http://10.1.0.32/webconsole/api/GetId?clientname=commserve' \
> --header 'Accept: application/json' \
> --header 'Authtoken: QSDK 314187d6720cd125e92872bb9a34eb8ebb7b599c27157194f2d3cc6fec36fd313ff029d7b9865bbc83989a8ec7340653f0f10f8f3714e1ae6d4e260ba921913d1285979cb026b788789bd071b4a21091888c6b055272bd485225c5baacf97ea48739c594b2ebd8badeae8a5373be023f36a89f3a1cd25b63d0410a3a2cccffad1d4f9e82a11911b6dcf152071082671d98020a11cec41adc4bde60d207fd22dddaf1eb793f93589e7ce509933023999cf51a91010d2cb0665508287fc9c62b0939f821bc90b683baa4d41fc3d1a2fe1ac6abd802fb54e2449dc29d82fac6c89973dd973c406176bd264d82a50b70fc4aae56bca5a1edc0f0a10f7fceff8ef4e5d19b459d7f87d8873' \
> | python -m json.tool
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 49 100 49 0 0 178 0 --:--:-- --:--:-- --:--:-- 178
{
"_type_": 3,
"clientId": 2,
"clientName": "commserve"
}
#
ログアウト
Logout コマンドでログアウトします。
コマンド
curl --location --request POST 'http://10.1.0.32/webconsole/api/Logout' \
--header 'Accept: application/json' \
--header 'Authtoken: QSDK 314187d6720cd125e92872bb9a34eb8ebb7b599c27157194f2d3cc6fec36fd313ff029d7b9865bbc83989a8ec7340653f0f10f8f3714e1ae6d4e260ba921913d1285979cb026b788789bd071b4a21091888c6b055272bd485225c5baacf97ea48739c594b2ebd8badeae8a5373be023f36a89f3a1cd25b63d0410a3a2cccffad1d4f9e82a11911b6dcf152071082671d98020a11cec41adc4bde60d207fd22dddaf1eb793f93589e7ce509933023999cf51a91010d2cb0665508287fc9c62b0939f821bc90b683baa4d41fc3d1a2fe1ac6abd802fb54e2449dc29d82fac6c89973dd973c406176bd264d82a50b70fc4aae56bca5a1edc0f0a10f7fceff8ef4e5d19b459d7f87d8873' \
--header 'Content-Length: 0'
実行例
# curl --location --request POST 'http://10.1.0.32/webconsole/api/Logout' \
> --header 'Accept: application/json' \
> --header 'Authtoken: QSDK 314187d6720cd125e92872bb9a34eb8ebb7b599c27157194f2d3cc6fec36fd313ff029d7b9865bbc83989a8ec7340653f0f10f8f3714e1ae6d4e260ba921913d1285979cb026b788789bd071b4a21091888c6b055272bd485225c5baacf97ea48739c594b2ebd8badeae8a5373be023f36a89f3a1cd25b63d0410a3a2cccffad1d4f9e82a11911b6dcf152071082671d98020a11cec41adc4bde60d207fd22dddaf1eb793f93589e7ce509933023999cf51a91010d2cb0665508287fc9c62b0939f821bc90b683baa4d41fc3d1a2fe1ac6abd802fb54e2449dc29d82fac6c89973dd973c406176bd264d82a50b70fc4aae56bca5a1edc0f0a10f7fceff8ef4e5d19b459d7f87d8873' \
> --header 'Content-Length: 0'
#