REST APIを使ってユーザ登録を半自動化する
- 目的
アプライアンス製品を扱っていると、ユーザ登録まで行った状態でお客様へ納品することがあると思います。今回は、大量のユーザ登録を行わなければならなくなった時を想定し、REST APIでのユーザ登録機能を利用してユーザ登録を半自動化することが目的です。
※以降は素人の浅知恵で考えたものですのでご注意ください。 - 環境
・Cisco DEVNET Sandbox のStealthwatch
・Windows10
・Excel
・curl(Windows10に標準でインストールされているもの)
・コマンドプロンプト - 想定フロー
(1)Excelでユーザ管理表を作成(ユーザ名、パスワード、ロールなどのパラメータ管理表)
(2)Excelからjsonファイルを生成する
(3)batファイルを実行し、REST APIの実行(REST APIの引数としてjsonを指定)
※今回は(3)の部分をとりあげます - batファイルの中身
curl -k -b cookies.txt -H "Content-type: application/json" -X POST --data "@%%i" https://IPアドレス/smc-users/rest/v1/user)pause
3行目以降ではbatファイルが存在するフォルダにある「.json」ファイルの数だけユーザ登録処理を実行しています。
4行目では、「--data "@%%i"」を指定することで、フォルダに存在するjsonファイル名をREST APIに引き渡しています。ここでポイントとなるのは、json形式で直接記述するのではなく、jsonファイルを引数に指定していることです。 - jsonファイルの中身
jsonファイルの中身は以下のようになっています。
{"userName": "test2","fullName": "test2","emailAddress": "","authenticationServiceName": "local","dataRoleId": 0,"functionRoleIds": [0],"webFunctionRoleIds": [1],"password": "パスワード","isAdmin": true} - 参考資料
Cisco DevNet: APIs, SDKs, Sandbox, and Community for Cisco Developers
https://developer.cisco.com/docs/stealthwatch/enterprise/#!user-management-api
- 愚痴
StealthwatchのREST APIのドキュメントが分かりにくかった。
StealthwatchのREST APIのドキュメントは以下のような感じ。最初はユーザ管理のREST APIのURLが分かりませんでした。。。
で、どこにURLが書いてあるかというと、上記画像にある「GET」とか「POST」のところをクリックすると出てくる以下の画面の「Try it」を選択した後に表示される画面に書いてあった。。
- 余談
jsonファイルに複数ユーザー書いておけば、一気に登録できるかと思ったけど、できなかった。REST APIが1ユーザずつの登録にしか対応していないかもしれない。(それかjsonの書き方が悪かった?)
とりあえずは、batで複数ファイルを繰り返し処理するようにして解決した。