Weblogic 静默运行WLST解释器

Weblogic 静默运行WLST解释器,weblogic,wlst,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 是否有命令行标志或某种未知的巫术使解释器不写这

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

Initializing WebLogic Scripting Tool (WLST) ...

Welcome to WebLogic Server Administration Scripting Shell

Type help() for help on available commands
是否有命令行标志或某种未知的巫术使解释器不写这些行? 我如饥似渴地试着用-s表示沉默,但没有用。 我所有的谷歌搜索都让我找到了一个完全不同的标志

编辑:

为了澄清我的目的:

我需要解释器来运行python脚本,我确实需要它的输出。然而,欢迎信是无用的,我想把它扔掉

限于:

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

尝试以下方法:

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

创建文件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,或者使用setWLSEnv.sh的绝对路径

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

显然,runwlst.sh中使用的sed脚本只有在“initialization”横幅为7行时才起作用,这可能会随着WLS的新版本或补丁而改变

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

$ createManagedServer.wlsh domain servername 
或者使用WLST脚本是其他类似的shell脚本:

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

你明白了

为了解决这个问题,我做了一些小小的改变。。 我在输出中放入了一个
grep-v
。。像这样:

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


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


根据您的需要,一个可能的解决方案是编写一个python脚本,该脚本首先更改输出流(如中所示),然后启动。请记住保留控制台输出流的“副本”,并使用它们将结果写入。

我想让它只显示我在脚本中打印的行,所以我做得很简单-为我想在日志中看到的所有行添加特殊的字符序列(在我的例子中是
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

你到底为什么要摆脱这个?将所有输出重定向到一个文件不是很简单吗?例如,
javaweblogic.WLST>/mylog.log
我需要将python脚本的输出重定向到调用shell脚本中。我不需要启动消息,它只是杂乱无章,我不需要。我想我可以用sed或grep来摆脱它,但这是一种可以为我赢得通往开发者地狱的单程票的黑客行为…:)python脚本的第一条语句可以重定向(myWlstLogFile)。其中myWlstLogFile是希望wlst代码写入日志的日志文件位置。日志文件loc可以作为参数传递给python脚本。我已经做到了。不过,这并不会从口译员那里删除欢迎信息。@MartinNielsen,你有没有找到解决办法?我正在尝试对基于python的wlst脚本执行相同的操作,我们希望使用watch命令运行该脚本。。。wlst输出日志将手表输出搞乱了!我们对将日志重定向到文件或诸如此类的东西不感兴趣,所以这些解决方案是不好的……这非常优雅。我想我真的可以用我自己的黑客来换这个。我现在在每个脚本中都有一个sed命令:)我试图通过
tail+7
而不是sed来传递它。不过,我中间仍然有一些空行,所以我可能需要sed来消除它们。令人遗憾的是,WLST启动仍然没有静音模式。这个模式很不错。我和白鹭一起做的。从常规WLST输出的头部和尾部删除所有不必要的行/oracle/fmwhome/oracle_common/common/bin/wlst.sh wls_soa_dms.wlst-c2-d2 | egrep-v'CLASSPATH |初始化WebLogic脚本工具|欢迎使用WebLogic服务器管理脚本Shell |键入help()有关可用命令的帮助|连接到|成功连接到|警告:连接到|时使用了不安全的协议以确保在线安全|应改用管理端口|与weblogic server断开连接|退出weblogic脚本工具| ^$'
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