【发布时间】:2018-06-04 15:06:00
【问题描述】:
我想在 Maximo 自动化脚本中获取用户的安全组,以便进行比较。我需要知道 MaxAdmin 或 UserUser 组中的用户是否执行我的脚本的其余部分。我的脚本是 Python 的
我如何获得该信息?
【问题讨论】:
标签: maximo
我想在 Maximo 自动化脚本中获取用户的安全组,以便进行比较。我需要知道 MaxAdmin 或 UserUser 组中的用户是否执行我的脚本的其余部分。我的脚本是 Python 的
我如何获得该信息?
【问题讨论】:
标签: maximo
自动化脚本中有一些隐式变量可供您使用(查看 IBM 自动化脚本指南),其中之一是当前用户的用户名。还有一个 :&USERNAME& 特殊绑定变量被当前用户名替换。您可以使用其中一个作为查询的一部分来获取 GroupUser MBO,然后检查它的计数。
我的记忆在这里,所以确切的名称和语法可能不同,但类似:
groupUserSet = MXServer.getMXServer().getMboSet("GROUPUSER", MXServer.getMXServer().getSystemUserInfo())
groupUserSet.setWhere("userid = :&USERNAME& and groupname in ('MAXADMIN', 'USERUSER')")
# Not really needed.
groupUserSet.reset()
if groupUserSet.count() > 0:
# The current user is in one of the relevant groups.
else:
# The current user is not in one of the relevant groups.
groupUserSet.close()
值得注意的是,与此类逻辑相关的事物通常不需要自动化脚本。通常条件表达式、正常的安全权限或报告可以在这里做你需要的。即使需要像这样的自动化脚本,你仍然不应该仅仅基于组,而是基于用户是否具有一定的权限。
要使用权限执行此操作,您需要向应用添加一个新的 sigoption,其 ID 类似于“CANCOMPPERM”(带有更详细的描述),并将其授予这两个组。确保这些组中的每个人同时注销(因此这两个组中的任何人都不会在给定时间点登录系统),否则权限缓存将不会更新。您的代码将如下所示:
permissionsSet = MXServer.getMXServer().getMboSet("APPLICATIONAUTH", MXServer.getMXServer().getSystemUserInfo())
permissionsSet.setWhere("optionname = 'CANCOMPPERM' and groupname in (select groupname from groupuser where userid = :&USERNAME& )")
# Not really needed.
permissionsSet.reset()
if permissionsSet.count() > 0:
# The current user has the necessary permission.
else:
# The current user does not have the necessary permission.
permissionsSet.close()
我认为 Maximo 的代码库中甚至有一些帮助方法,您可以调用这些方法来为您执行上述操作,并在是否授予权限时返回真/假。
【讨论】:
AttributeError: 'NoneType' object has no attribute 'count' in <script> at line number 10 我已将"GROUPUSER" 更改为"$GROUPUSER",但我仍然收到此错误。