背景:目前項目需要在不重啟的情況下定期修改WebSphere控制台密碼。
1.1 wsadmin使用簡介
WebSphere控制台版本:9.0.5.5
wsadmin 支持兩種腳本語言: jacl(Java Command Language , deprecated) & Jython 。
要想得到 wsadmin 語法相關的幫助,進入實例的 bin 目錄下可以輸入 wsadmin.sh -h,以下是幫助的詳細內容:
WASX7001I: wsadmin 是用於 WebSphere 腳本編制的可執行文件。
語法:
wsadmin
[ -h(elp) ]
[ -?]
[ -c <command> ]
[ -p <properties_file_name>]
[ -profile <profile_script_name>]
[ -f <script_file_name>]
[ -javaoption java_option]
[ -lang language]
[ -wsadmin_classpath classpath]
[ -profileName profile]
[ -conntype
SOAP
[-host host_name]
[-port port_number]
[-user userid]
[-password password] |
RMI
[-host host_name]
[-port port_number]
[-user userid]
[-password password] |
NONE
]
[ -jobid <jobid_string>]
[ -tracefile <trace_file>]
[ -appendtrace <true/false>]
[ script parameters ]
其中 “ command ”是要傳遞給腳本處理程序的命令;
“ properties_file_name ”是要使用的 java 屬性文件;
“ profile_script_name ”是在主命令或文件前要執行的腳本文件;
“ script_file_name ”是要傳遞給腳本處理程序的命令;
“ java_option ”是要傳遞給 Java 程序的 java 標准或非標准選項;
“ language ”是要用於解釋腳本的語言;受支持的值為“ jacl ”和“ jython ”。
“ classpath ”是附加到內置路徑中的類路徑;
“ -conntype ”指定要使用的連接類型;
缺省參數是“ SOAP ”
conntype 為“ NONE ”意味着沒有建立服務器連接
且某些操作會以本地方式執行;
“ host_name ”是用於 SOAP 或 RMI 連接的端口;
缺省值是本地主機;
“ port_number ”是用於 SOAP 或 RMI 連接的端口;
“ userid ”是服務器以安全方式運行時
所需的用戶標識;
“ password ”是服務器以安全方式運行時
所需的密碼;
“ script parameters ”是命令行上的任何其他內容。它們
在 argv 變量中傳遞給腳本;參數的數目
可在 argc 變量中獲得。
“ jobid_string ”是要用來審計 wsadmin 的每個調用的
作業標識字符串;
“ trace_file ”是 wsadmin 跟蹤輸出定向至的
日志文件名和位置;
如果未指定命令或腳本,將創建一個解釋器 shell
以供交互使用。要離開交互式腳本編制會話,
使用“ quit ”或“ exit ”命令。
可以在單個命令行上指定幾個命令、屬性文件和
概要文件。它們是按照其指定的順序處理和執行的。
=============================================================
1.2 Wsadmin 的調用有三種不同的方式:
使用單行命令方式 (-c)
wsadmin –c AdminControl.getNode()
使用交互方式
wsadmin
運行腳本文件,使用 -f 參數
wsadmin –f myScript.py
使用 -profile 參數,表示要執行的一些預先執行的腳本。
使用 -p 可以定義屬性文件的位置。
Wsadmin 管理的對象包括:
AdminControl :用於操作控制。通過 MBean 來進行通訊,包含查詢在在的運行中的對象和其屬性,並在這些對象上調用操作。另外,支持關於連接服務的查詢,客戶端跟蹤的方便命令,重新連接至服務器,啟動和停止服務器。
AdminConfig :管理存儲在倉庫中的配置信息。通過 WAS 的配置服務組件來查詢和更改配置。可以使用它來查詢存在的配置對象,創建配置對象,修改存在的對象和移除配置對象。在分布式的環境中,此命令僅僅能用於連接到 DM ,不能連接到 Node Agent 或管理某一 Application Server ,因為這些服務器的進程配置僅僅是保存在 DM 上的一個 Copy( 副本 ) 。
AdminApp :能更新應用的元數據,映射虛擬主機到 Web 模塊,映射已安裝的模塊至服務器。對一個應用程序進行更改,比如為應用程序指定一個共享庫,設置會話管理的配置屬性。
AdminTask :用於訪問面向任務的管理命令。這些命令用於訪問配置命令和運行時對象管理命令。當腳本客戶端運行時,可以自動發現管理命令。可用的管理命令以用於安裝 WAS 的版本。
Help :
print Help.AdminControl()
運行環境: AdminConfig , AdminTask , AdminApp 對象都是處理配置功能。可以在連接或不連接至服務器的環境下運行,但 AdminControl 需要連接到服務器才能運行,因為他是通過調用正在運行的 JMX MBean 來執行的。
=============================================================
1.3 修改密碼腳本
#!/bin/bash #wsadminPath:wsadmin.sh腳本路徑 #wasUser:was平台用戶 #wasPasswd:was平台用戶舊口令 #wasUPasswd:was平台用戶新口令 #uniqueName:was用戶的唯一標識,可以在was平台頁面查找 wasUser='admin' wasPasswd='Test@1234' wasUPasswd='Test@5678' wsadminPath='/was/IBM/WebSphere/AppServer/bin' uniqueName='uid=admin,o=defaultWIMFileBasedRealm' if [[ "$wasUser" == "" ]] then echo "參數:[wasUser]不能為空" exit -1 fi if [[ "$wasPasswd" == "" ]] then echo "參數:[wasPasswd]不能為空" exit -1 fi if [[ "$wasUPasswd" == "" ]] then echo "參數:[wasUPasswd]不能為空" exit -1 fi if [[ "$wsadminPath" != "" ]] then cd $wsadminPath cmd='$AdminTask updateUser {-uniqueName '$uniqueName' -password '$wasUPasswd' -confirmPassword '$wasUPasswd'}' echo "CMD:[${cmd}]" ./wsadmin.sh -user $wasUser -password $wasPasswd <EOF ${cmd} exit EOF else echo "參數:[wsadminPath]不能為空" exit -1 fi
=============================================================
參考鏈接:
WebSphere Application Server之wsadmin學習(一)
http://www.blogjava.net/fastzch/archive/2008/09/18/229797.html
通過使用wsadmin腳本編制來運行AdminTask對象命令
https://www.ibm.com/docs/zh/was-nd/9.0.5?topic=scripting-commands-admintask-object-using-wsadmin
=============================================================