・開始コマンドcurl -u test:test http://localhost:8080/host-manager/text/start?name=www.awesomeserver.com
・終了コマンドcurl -u test:test http://localhost:8080/host-manager/text/stop?name=www.awesomeserver.com
しかし、残念ながら、curlはインストールされいません。
既に稼働中のシステムなので、新たなアプリケーションのインストールをせずに今環境で利用できるもので勝負です。
お次は、Windows Powershellで使えそうなコマンドを調査します。
httpのリクエストを発行できるコマンドとしてInvoke-WebRequestがありました。
さて、Invoke-WebRequestですが、引数が多いです。
とりあえず、Windows Powershellで下記のコマンドを実行してみます。
$url = http://localhost:8080/host-manager/text/start?name=www.awesomeserver.com
Invoke-WebRequest -Uri $uri
残念ながらエラーとなりました。
Invoke-WebRequestの”-Authentication”オプションを参照するとBASIC認証では”-Credential”オプションを指定する必要がありそうです。
「Host Manager App — Text Interface」の「Configuring Manager Application Access」を参照すると、TomcatのManagerアプリケーションを使用する際にTomcatのユーザ認証が必要であることが解ります。
さらに${CATALINA_BASE}/conf/tomcat-users.xml に「admin-script」権限を付与したユーザを追加しておく必要があります。
停止用のバッチファイルTomcatStartStop.batは、下記のようになりました。
SET USER=%1
SET PASS=%2
SET APP=%3
SET OPE=%4
powershell -ExecutionPolicy RemoteSigned -Command .\TomcatStartStop.ps1 %USER %PASS %APP %OPE ; exit $LASTEXITCOD"
SET EXIT_CODE=%ERRORLEVEL%
IF %EXIT_CODE%==9 GOTO END
CALL :ERRORCHECK
GOTO END
:ERRORCHECK
IF NOT %EXIT_CODE%==0 (
SET EXIT_CODE=9
}
EXIT /B
:END
EXIT /B %EXIT_CODE%
呼び出しているWindows Powershellのスクリプト(TomcatStartStop.ps1)は下記の通り。
Param( $user, $pass, $app, $ope )
$secpassword = ConvertTo-SecureString $pass - AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($user, $secpassword)
$uri = "http://localhost:8080/manager/text/" + $ope + " ?path=/" + $app
Invoke-WebRequest -Uri $uri -Credential $cred 2>&1
if ($?) {
write-host "正常終了"
exit 0
} else {
write-host "異常終了"
exit 9
}
コマンドの実行は下記のようになります。
.\TomcatStartStop.bat [Tomcat User] [password] [Web application] [start/stop]