我试图想出一种方法来使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代码。
答案 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。只需记住保持控制台输出流的“副本”并使用这些来将结果写入。