BIEE 12c 使用wlst脚本修改角色名
来源:互联网 发布:微积分中d含义,知乎 编辑:程序博客网 时间:2024/05/12 20:18
一般来说,很少需要修改角色名。而且biee角色名不能直接修改,只能采用创建新角色然后对新角色重新授权来间接实现修改角色。
但是这样有一个问题,如果需要修改的角色很多,或者需要授权的地方很多怎么办?
这个时候就只能采用程序的方式的来修改角色名了。
由于biee从11g起就采用了OPSS来管理角色,修改角色名就被分为了两步。
第一步 修改em中的角色名
第二步 修改rpd和catalog中的角色名
第一步 修改em中的角色名
修改em中的角色名,可以采用两种方式,一种是使用wlst脚本,另一种是使用java jmx接口。本文以wlst为例,讲解相关方法。
wlst是weblogic的管理脚本,可以和jython一起使用,能完成复杂的自动化运维操作。
wlst脚本有三种调用方式,分别是交互式、离线式和嵌入式。本文以离线式为例,其他两种方式请参考
Using the WebLogic Scripting Tool
离线式比较好理解,就是用wlst解释器调用py (Jython)脚本,完成相关操作。
具体方式为:
$FMW/oracle_common/common/bin/wlst.sh
然后使用execfile调用脚本/home/biee06/appRoleRename.py
wls:/offline> execfile('/home/biee06/appRoleRename.py')
appRoleRename.py示例程序如下:
该程序会用于给所有黑名单之外的角色“添加"前缀
注:先创建新角色,然后复制角色成员,最后删除旧角色;大家可以根据自己的需要来修改下面的程序
from cStringIO import StringIOimport sysimport reblacklist = ['BIAdministrator','BIAuthor','BIConsumer','BISystem']; #角色黑名单,不会修改黑名单中的角色rolelist = [];cux_prefix = 'FBUBI_' #需要添加的前缀admin_user ='weblogic'admin_password = 'admin123'admin_url = 't3://localhost:8701'def createRole( roleName ): "创建角色" createAppRole(appStripe="obi", appRoleName= roleName) print "角色",roleName,"创建成功" return;def deleteRole( roleName ):"删除角色"deleteAppRole(appStripe="obi", appRoleName=roleName) ;print "删除角色",roleName,"成功"return;def deleteRoleStartWith( startWith ):"删除以startWith开头的角色"listRoles()tmpList = rolelist[:];for r in tmpList:if r.startswith(startWith):deleteAppRole(appStripe="obi", appRoleName=r) ;print "删除角色",r,"成功"return;def addMembers( roleName,memberDict):"添加成员"grantAppRole(appStripe="obi", appRoleName=roleName, principalClass=memberDict['principalClass'], principalName=memberDict['principalName'], forceValidate="false") print "成员",memberDict['Type'],memberDict['principalName'],"添加成功"return;def getMembers( roleName ):"获取角色成员列表"oldstdout = sys.stdoutsys.stdout = mystdout = StringIO()listAppRoleMembers(appStripe="obi",appRoleName= roleName);sys.stdout = oldstdoutapp_roles=mystdout.getvalue()allLines = app_roles.strip().splitlines()members=[];for line in allLines:matchObj=re.search('Principal Clz Name : ([^,]+), Principal Name : (\w+), Type : (\w+)',line)if matchObj:d = {'principalClass': '', 'principalName': ''};d['principalClass'] = matchObj.group(1)d['principalName'] = matchObj.group(2)d['Type'] = matchObj.group(3)members.append(d)else:print "角色[",roleName,"]没有成员"return membersdef listRoles():"获取角色列表"oldstdout = sys.stdoutsys.stdout = mystdout = StringIO()listAppRoles(appStripe="obi")sys.stdout = oldstdoutapp_roles=mystdout.getvalue()allLines = app_roles.strip().splitlines()for line in allLines:matchObj=re.search('Principal Name : (\w+)',line)if matchObj: roleName = matchObj.group(1) if roleName in blacklist: continue else: rolelist.append(roleName) else: print "No match!!"return;print 'Connecting...'#======================main=========================================try: connect(admin_user, admin_password, admin_url)except: print "Error while trying to connect server, please make sure server is running."print "====遍历角色======="listRoles()if len(rolelist) > 0 :print "一共找到",len(rolelist),"个角色"print "====开始创建角色======="for role in rolelist: createRole(cux_prefix+role)print "=====开始添加成员======="for role in rolelist:members=getMembers( role )for member in members:if member['Type'] == 'APP_ROLE':member['principalName'] = cux_prefix+member['principalName']addMembers(cux_prefix+role,member)print "=========删除旧角色============="for role in rolelist:deleteRole(role)print "=======操作结束========="disconnect()
除了执行wlst.sh之外,还可以直接使用java weblogic.WLST
appRoleRename.py的方式来调用脚本。但在执行java weblogic.WLST之前需要先设置好CLASSPATH和PATH环境变量。
方法是直接加载如下脚本来完成相关变量的设置:
source $FMW/Oracle_Home/wlserver/server/bin/setWLSEnv.sh
第二步 修改rpd和catalog中的角色名
可以使用datamodel.sh renameapproles来修改rpd和catalog中的角色名
语法如下:
./datamodel.sh renameapproles -h
usage: renameapproles -T <approlenamelist.json> [-L <plugin list>] -U <cred user> [-P <cred password>] [-SI <service instance>] [-S <host>] [-N <port>] [-SSL]
其中approlenamelist.json是一个json格式的文本,需要我们自己编写,例如
{"Title":"Target Application Roles","App-Roles":[{ "oldname":"app1", "newname":"bi_app1" },{ "oldname":"app2", "newname":"bi_app2" }]}
调用示例:
cd $fmw/user_projects/domains/bi/bitools/bin
./datamodel.sh renameapproles -T approlenamelist.json -U weblogic -P admin123 -SI ssi
最后记得重启一下整个biee,以便让修改生效。
- BIEE 12c 使用wlst脚本修改角色名
- BIEE 12c使用runcat.sh脚本部署catalog并移除BIConsumer角色
- biee 12c 修改node manager密码
- biee 12c 修改weblogic用户密码
- BIEE 12c 批量替换catalog主题名
- WebLogic(12C)——WLST
- WebLogic(12C)——WLST
- BIEE 12c 使用CSS隐藏透视表合计列
- WLST使用:创建用户
- OBIEE权限管理-WLST脚本
- Weblogic 12c issue as WLST-WLS-1326447719560
- oracle biee 12c windows install
- 使用wlst创建dynamic cluster
- weblogic 使用WLST新建域
- biee登陆界面修改
- Server(Admin) start is failing in WLST as outofmemory error permgen space for weblogic 12c
- 利用 ant 脚本修改项目包名
- 利用 ant 脚本修改项目包名
- Spring boot整合activiti modeler 5.22
- MySQL
- Java设计模式——工厂方法(Factory Method)
- 为什么使用memcached
- 最大熵模型
- BIEE 12c 使用wlst脚本修改角色名
- 开发人员学Linux(2):VirtualBox中安装CentOS7系统设置
- SDUT-M--二分查找
- 113. Path Sum II
- 工厂生产各阶段名词
- nodejs支持ES6语法(BABEL)
- Spring中@Controller和@RestController之间的区别
- VR 一些识别概念
- 喵哈哈村小学上课啦(欧拉函数)