使用wsadmin修改WebSphere控制台密码
背景:目前项目需要在不重启的情况下定期修改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
=============================================================