WLST 执行存储变量 "connect()" 语句

2 投票
1 回答
2590 浏览
提问于 2025-04-17 21:59

我正在把一个环境变量从bash传递到python。

#!/usr/bin/env python2
import os

#connect("weblogic", "weblogic", url=xxx.xxx.xxx.xxx:xxxx)
os.environ['bash_variable']

通过wlst.sh我可以打印出导出的bash_variable,但我该如何执行这个存储的变量呢?基本上,我想去掉原来的连接语句,改为传递一个包含这些信息的变量。谢谢!

1 个回答

1

不过我想问,为什么不直接用变量作为参数来调用脚本,而是用 sys.argv[] 呢?

比如说,可以这样做。

import os
import sys
import traceback
from java.io import *
from java.lang import *




wlDomain = sys.argv[1]
wlDomPath = sys.argv[2]
wlNMHost = sys.argv[3]
wlNMPort = sys.argv[4]
wlDPath="%s/%s" %(wlDomPath,wlDomain)
wlNMprop="/apps/bea/wls/scripts/.shadow/NM.prop"

try:
    print "Connection to Node Manager"
    print ""
    loadProperties(wlNMprop)
    nmConnect(username=NMuser,password=NMpass,host=wlNMHost,port=wlNMPort,domainName=wlDomain,domainDir=wlDPath,mType='ssl',verbose='true')
except:
    print "Fatal Error : No Connection to Node Manager"
    exit()

print "Connected to Node Manager"

NM.prop 文件是一个包含 NM 的用户名和密码的 600 文件。

编辑:

根据我的理解,你想做的事情大概是这样的:

URLS = ['t3s://Host1:Port1','t3s://Host2:Port2','t3s://Host3:Port3']
for urls in URLS:
    connect('somebody','password',urls)
    {bunch of commands}
    disconnect()

而 URLS 列表的值将由环境来决定。

我觉得你有三种选择:

  1. 为每个环境准备一个脚本,除了 URLS 列表外,其他部分基本相同。
  2. 写一个脚本,但根据 sys.argv[1](环境作为参数)来进行条件分支,在这里创建列表。
  3. 写一个脚本,根据环境使用不同的参数文件,每个参数文件里包含你需要的列表。

大概是这样的:

propENV = sys.argv[1]
propPath = "/path1/path2"
propFile = "%s/%s" %(propPath,propENV)

loadProperties(propFile)

我个人可能会选择使用属性文件的方式,因为从操作的角度来看,这样更灵活……至少在我看来是这样。

撰写回答