国産IDaaS Exticを使ってみる 5. コマンド実行

[前回](https://qiita.com/ahra_/items/a5edf5fd97f6311439af)の続きです。
## コマンド(オンプレミス)実行機能
Windows上で動作する「コマンド実行エージェント」により、Exticのユーザー情報の追加・更新・削除に合わせて実行ファイルを実行できる機能です。
複数のエージェントを稼働させることで複数の実行ファイルを実行することができます。
## 設定
### Extic側の準備
管理コンソール > コマンド(オンプレミス)を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/8043129d-1835-9dbd-4f7c-8a1b60ab2a14.png)
表示名を設定し、接続キーを発行します。
![スクリーンショット 2024-12-26 154149.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/af293322-852c-52f9-5faf-eecf5b2a57b4.png)
今回は2つ追加してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/4533552c-9af2-cc8a-4f1f-9df94ffedc6b.png)
### Webアプリケーションの設定
`cmdagent.war`をダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/5ea6e793-b184-67f2-fe59-8d20eea9ceb1.png)
コピー・リネームし、`<tomcat_home>\webapps\`以下にコピーしてデプロイを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/3423c732-5330-0365-e888-c1a7009911d9.png)
`<tomcat_home>\webapps\<agent_name>\WEB-INF\classes\META-INF\application_setting.properties`を編集します。
サブドメイン、接続キーとsqliteのファイルが入るディレクトリを指定します。
同じモジュールを複数使用する場合、sqliteのディレクトリを分ける必要があります。
![スクリーンショット 2024-12-26 154706.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/6efbf167-1b2d-d5b3-f64d-f19147cb2495.png)
![スクリーンショット 2024-12-26 155017.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/8862529b-50e3-3ffe-d2e4-592bf7d268b3.png)
保存してTomcatを再起動します。
`http://(ホスト名):(ポート)/cmdagent1/`および`/cmdagent2/`にアクセスし、管理者ロールを持つユーザーでログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/1b8d7e94-6113-4eea-dd69-775c4f5286f7.png)
次の画面に遷移します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/bf075bae-8dd8-49e1-bd63-ef87f13e4141.png)
右上プルダウンメニューの「設定」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/5b194e61-ca52-9b00-0899-d1059ea8f18b.png)
次の画面に遷移します。
ユーザーの追加、更新、削除ごとにコマンドが実行できることがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/23739fa6-0ac5-122c-2451-68c6fa952d78.png)
今回は以下のようなファイルを作成しました。
これらを`cmdagent1`の実行コマンドとして指定します。
``` C:\temp\add.bat
if exist C:\cmduser\%1 (
	rem
) else (
	mkdir C:\cmduser\%1
)

echo %1 > C:\cmduser\%1\userinfo.txt
echo %2 >> C:\cmduser\%1\userinfo.txt
```
``` C:\temp\upd.bat
echo %1 > C:\cmduser\%1\userinfo.txt
echo %2 >> C:\cmduser\%1\userinfo.txt
```
``` C:\temp\del.bat
if exist C:\cmduser\%1 (
	rd /s /q C:\cmduser\%1
)
```
実行区分は「実行する」に、「実行コマンド」には実行ファイルの **フルパスを** 設定します。
仮に環境変数`Path`が通っている実行ファイルでもフルパスで指定する必要があります。
また「実行コマンド」とありますが、`echo %computername%`のようにコマンドプロンプトのコマンドを書いても動作しません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/83a69113-d6ae-85a3-3c63-a8fa92e4a5c3.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/e54e47fa-7c9f-6926-f103-97e6b622754c.png)
「削除」時に使用できる属性は`ユーザー名`のみです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/a8f98d55-7bb4-289c-698c-481dd3cb06ef.png)
`cmdagent2`ではユーザー情報更新時にWindowsイベントログにログを出力するようなコマンドを実行します。
``` C:\temp\upd2.bat
EventCreate /L Application /T INFORMATION /SO "CMDAGENT" /ID 100 /D "User %1 info is updated"
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/340e1251-0dbd-383c-e7bf-bf8d9b81a143.png)
最後にポーリング間隔とTomcat起動に合わせた自動起動の設定を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/d1bc5b1d-4817-44a0-62dd-ee4881569f65.png)
## 確認
Exticで対象ユーザーのコマンド実行を「使用する」とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/5a8a3e94-5d07-ed54-fc89-4b8aa2bf60f0.png)
この状態で`cmdagent1`を起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/c8b0ade0-e723-e914-335b-3ada738edaa0.png)
`add.bat`が実行され、フォルダ・ファイルの作成が確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/2a604ae8-a3d4-a17a-1c32-94f7b11f7875.png)
対象ユーザーの情報を更新します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/287cd530-1713-9abe-7dc8-02c61a5be193.png)
`upd.bat`、`upd2.bat`共に動作していることがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/ea3166f4-c22d-9f67-7550-36eba80d9120.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/44842829-28da-0ebb-a730-7c0b91442153.png)
対象ユーザーのコマンド実行を「使用しない」とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/6693f20c-0141-13a9-2840-b2fcf41dab82.png)
`del.bat`が実行され、フォルダが削除されたことがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/3853a30e-0944-bf07-3183-69bff7b03040.png)
## 
このように「コマンド実行」モジュールでは、Exticの追加・更新・削除に合わせてオンプレミスサーバー上のコマンド（実行ファイル）が実行されます。
[次回](https://qiita.com/ahra_/items/7cb8fb47eaa0bcb5270b)はExticからLDAPサーバへのプロビジョニングについて検証します。