概要
wgetでintra-martのテナントの初期設定を実施するに引き続き、intra-martの初期設定をwgetでやろう第2弾です。
テナントの初期設定に続き、ライセンス数の設定もwgetでやってみたいと思います。
このライセンス設定画面の無制限のチェックボックスをチェックするのをwgetで対応したいと思います。
前提
以下の環境で動作確認した内容です。
環境としては、テナントの初期設定まで実施済みのものとします。
application | version |
---|---|
OS | CentOS7 |
JDK(Oracle) | 8u91 |
Resin | 4.0.48 |
intra-mart | 8.0.11 |
Oracle | 12.1.0.2 |
nkfのインストール
本記事で紹介しているスクリプトを実行するには別途「nkf」のインストールが必要です。
URLエンコード用にnkfを利用しています。
nkfは以下のコマンドでCentOS6のリポジトリからインストールできるようです。
CentOS7にnkfをインストールする方法
yum localinstall -y http://mirror.centos.org/centos/6/os/x86_64/Packages/nkf-2.0.8b-6.2.el6.x86_64.rpm
なぜか私の環境ではmirror.ceonts.org
が解決できなかったので...
yum localinstall -y http://213.184.126.230/centos/6/os/x86_64/Packages/nkf-2.0.8b-6.2.el6.x86_64.rpm
wgetでシステム管理者のセッションを作成する
まず、ログイン前にログインページを表示してim_secure_tokenとim_admin_login_infoを取得します。
取得したログインページンのHTMLをgrepして2項目の値を取得して、nkfでURLエンコードをかましています。
wget \
--keep-session-cookies \
--save-cookies cookies.txt \
http://localhost:8080/${CONTEXT_PATH}/system/login
IM_SECURE_TOKEN=`grep "im_secure_token" login | sed 's/.*value="\(.*\)".*/\1/g' | nkf -WwMQ | tr = %`
IM_ADMIN_LOGIN_INFO=`grep "im_admin_login_info" login | sed 's/.*value="\(.*\)".*/\1/g' | nkf -WwMQ | tr = %`
続いて、システム管理者でログインします。
ログインのpost送信時に、先ほど取得したim_secure_tokenとim_admin_login_infoが必要です。
wget \
--keep-session-cookies \
--load-cookies cookies.txt \
--save-cookies cookies.txt \
--post-data "im_user=${SYSTEM_MANAGER_CD}&im_password=${SYSTEM_MANAGER_PASSWORD}&im_admin_login_info=${IM_ADMIN_LOGIN_INFO}&im_page_key=&im_secure_token=${IM_SECURE_TOKEN}" \
http://localhost:8080/${CONTEXT_PATH}/system/certification
wgetでライセンス数登録
ログイン時に取得したcookie情報を利用してライセンス数の登録を行います。
wget \
--load-cookies cookies.txt \
--post-data "accountLicenseInfinity=infinity&applicationId=XXXXX&tenantLicenseInfinityXXXXX=infinity&applicationId=YYYYY&tenantLicenseInfinityYYYYY=infinity" \
http://localhost:8080/${CONTEXT_PATH}/system/settings/tenant/license/edit
無制限にチェックを入れたい場合は以下のようなPOSTデータを送信すればよいようです。
"accountLicenseInfinity=infinity"
# XXXXX、YYYYYにはアプリケーションごとのIDを指定します。
"applicationId=XXXXX&tenantLicenseInfinityXXXXX=infinity&applicationId=YYYYY&tenantLicenseInfinityYYYYY=infinity"
まとめると
これで画面を開かずにライセンス数の設定ができます。
#!/bin/bash
# システム管理者のユーザID
SYSTEM_MANAGER_CD="system"
# システム管理者のパスワード
SYSTEM_MANAGER_PASSWORD="manager"
CONTEXT_PATH="imart"
rm -f login
wget \
--keep-session-cookies \
--save-cookies cookies.txt \
http://localhost:8080/${CONTEXT_PATH}/system/login
IM_SECURE_TOKEN=`grep "im_secure_token" login | sed 's/.*value="\(.*\)".*/\1/g' | nkf -WwMQ | tr = %`
IM_ADMIN_LOGIN_INFO=`grep "im_admin_login_info" login | sed 's/.*value="\(.*\)".*/\1/g' | nkf -WwMQ | tr = %`
echo ${IM_SECURE_TOKEN}
echo ${IM_ADMIN_LOGIN_INFO}
LOGIN_POST_DATA="im_user=${SYSTEM_MANAGER_CD}&im_password=${SYSTEM_MANAGER_PASSWORD}&im_admin_login_info=${IM_ADMIN_LOGIN_INFO}&im_page_key=&im_secure_token=${IM_SECURE_TOKEN}"
echo ${LOGIN_POST_DATA}
wget \
--keep-session-cookies \
--load-cookies cookies.txt \
--save-cookies cookies.txt \
--post-data "${LOGIN_POST_DATA}" \
http://localhost:8080/${CONTEXT_PATH}/system/certification
wget \
--load-cookies cookies.txt \
--post-data "accountLicenseInfinity=infinity&applicationId=XXXXX&tenantLicenseInfinityXXXXX=infinity&applicationId=YYYYY&tenantLicenseInfinityYYYYY=infinity" \
http://localhost:8080/${CONTEXT_PATH}/system/settings/tenant/license/edit