使用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

=============================================================

posted @ 2021-11-07 18:04  非然踏古忘今焉  阅读(1168)  评论(0编辑  收藏  举报