求可停止除AdminServer外所有运行状态Weblogic托管服务器的WLST脚本
Weblogic受管服务器批量停服脚本修正
核心错误原因
- 缩进异常:WLST基于Jython运行,对代码块缩进要求严格,原脚本
stopmanagedservers函数内多处缩进层级错误,if分支下的逻辑未正确缩进导致语法报错 - 状态判断语法不严谨:
in ("RUNNING")写法实际等价于直接匹配字符串内字符,并未实现元组匹配逻辑,易出现状态匹配异常 - 上下文切换顺序错误:原代码先获取配置域服务器列表再切换到运行时上下文,逻辑顺序不合理,且未声明连接必填的用户名、密码、管理端地址三个变量
- 运行状态打印逻辑缺失:原
getdomainstatus函数获取到服务器状态后未打印,无法直观看到域内服务器当前状态
修正后完整脚本
import sys import re import getopt # 请根据实际环境修改以下连接配置 USERNAME = "weblogic" PASSWORD = "自定义的管理端密码" ADMINURL = "t3://管理端IP:管理端端口" def connectt(): connect(USERNAME, PASSWORD, ADMINURL) def getdomainstatus(): servers=cmo.getServers() print "-------------------------------------------------------" print "\t"+cmo.getName()+" 域当前运行状态" print "-------------------------------------------------------" for server in servers: status=state(server.getName(),server.getType()) print "服务器名称:%s,运行状态:%s" % (server.getName(), status) print "-------------------------------------------------------" # 停止除AdminServer外所有处于运行状态的受管服务器 def stopmanagedservers(): domainRuntime() servers=cmo.getServers() for server in servers: server_name = server.getName() if server_name != 'AdminServer': bean="/ServerLifeCycleRuntimes/"+server_name serverbean=getMBean(bean) # 增加空判断避免未创建生命周期Bean的服务器报错 if serverbean is not None and serverbean.getState() == "RUNNING": print "检测到运行状态受管服务器,正在停止:",server_name shutdown(server_name,server.getType()) serverConfig() connectt() getdomainstatus() stopmanagedservers()
执行注意事项
- 执行前需确认Weblogic管理端处于正常运行状态
- 连接配置中的管理端端口默认是7001,如有修改请同步调整
- 若需要并行停止多台受管服务器,可以在
shutdown方法中增加ignoreSessions='true'参数加快停止速度
内容的提问来源于stack exchange,提问作者Vignesh
相关产品推荐
相关产品推荐

