静默运行WLST解释器

时间:2014-02-17 14:17:51

标签: weblogic wlst

我试图想出一种方法来使weblogic WLST终端以静默模式运行。 当我使用java weblogic.WLST命令启动终端时,它会打印行:

Initializing WebLogic Scripting Tool (WLST) ...

Welcome to WebLogic Server Administration Scripting Shell

Type help() for help on available commands

是否有命令行标志或一些未知的巫术使解释器不写这些行? 我一直试着沉默,无济于事。 我所有的谷歌搜索引导我到一个完全不同的-i旗帜。

编辑:

澄清我的目的:

我需要解释器来运行python脚本,我确实需要输出。然而欢迎信息是无用的混乱,我想摆脱它。

限于:

我唯一的问题是解释器本身写的第一行。一旦进入python脚本,我就没有问题处理发送到输出的内容。我唯一的问题是上面写的欢迎线。这些是由解释器本身编写的,而不是python代码。

4 个答案:

答案 0 :(得分:2)

试试这个:

就像你说“这是一个黑客”,但这是一个相当优雅的黑客。

创建文件runwlst.sh:

#!/bin/bash
. ${WLS_HOME}/server/bin/setWLSEnv.sh >/dev/null 2>&1
FILENAME=$1
shift
java weblogic.WLST ${FILENAME} "$@" | sed -e "1,7 d"

需要设置WLS_HOME,或者使用绝对路径来设置WLSEnv.sh。

然后将您的WLST脚本创建为“shell”脚本,就像这样(我喜欢为我的脚本使用“.wlsh”扩展名):

#!/bin/bash /absolute_path_to_runwlst.sh/runwlst.sh
# your WLST Python code starts here
import ...

显然,runwlst.sh中使用的sed脚本只有在“初始化”标题长7行时才有效,这可能会随着新版本或WLS补丁而改变。

此解决方案的好处是,现在您可以从命令行运行WLST脚本,如下所示:

$ createManagedServer.wlsh domain servername 

或者使用WLST脚本是其他shell脚本:

#!/bin/bash
PORT=`./getPortForManagedServer.wlsh domain server`
echo ${PORT}

你得到了照片

答案 1 :(得分:2)

为了解决这个问题,我做了一些不同的事情。 我在输出中放了grep -v ..就像这样:

  

java weblogic.WLST script.py $ ARGS | grep -v“初始化WebLogic   脚本工具(WLST)...“| grep -v”欢迎使用WebLogic Server   管理脚本Shell“| grep -v”键入help()以获取帮助   可用命令“| grep -v”已成功连接到管理服务器   属于domain \“domain \”的“AdminServer”。“| grep -v   “警告:使用不安全的协议连接到服务器。” |   grep -v“确保线上安全,SSL端口或管理端口   应该使用。“| grep -v”位置已更改为domainRuntime   树。这是一个只读树“| grep -v”,其中DomainMBean为   root MBean。“| grep -v”如需更多帮助,请使用help('domainRuntime')“|   grep -v“成功连接到管理服务器”| grep -v“连接   到t3://“

答案 2 :(得分:2)

我想让它只显示我在脚本中打印的行,所以我做得很简单 - 将特殊字符序列添加到我希望在日志中看到的所有行(在我的情况下它是print('--> ...'))然后像那样推出它:

wlst.sh changePassword.wlst.py "$@" | grep -- "-->"

示例输出:

Executing WLST script for domain SampleDomain
--> Executing credential change for SampleDomain
--> Changing DB password for DSTYPE1
--> Changing password for DataSource SampleDS1
--> Successfully changed DB credentials!
--> Changing password for DataSource SampleDS2
--> No JDBC resource with name SampleDS2 found, skipping...
--> Changing password for DataSource SampleDS3
--> No JDBC resource with name SampleDS3 found, skipping...
--> Changing password for DataSource SampleDS4
--> Successfully changed DB credentials!
Completed execution for domain SampleDomain

答案 3 :(得分:0)

有点远但你也可以通过将stdout和stderr捕获到不同的流中然后将从weblogic mbeans捕获的值打印到控制台流来使整个JVM输出静音。在编写了一个ansible模块后,我不得不做一些类似的事情,这个模块要求我将纯JSON返回到stdout,而不会在终端上打印任何消息横幅或其他内容。

满足您需求的可能解决方案包括编写一个python脚本,该脚本首先更改this example中的OutputStream,然后启动WSLT session。只需记住保持控制台输出流的“副本”并使用这些来将结果写入。