Maximo自动化脚本获取用户securityGroup

时间:2018-06-04 15:06:01

标签: maximo

我想在Maximo自动化脚本中获取用户的安全组,以便我可以比较它。我需要知道MaxAdmin或UserUser组中的用户是否执行我的脚本的reste。我的脚本是Python的

我怎么能得到那个信息?

1 个答案:

答案 0 :(得分:1)

在自动化脚本中可以使用一些隐式变量(请查看IBM Automation Script指南),其中一个是当前用户的用户名。还有:& 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的代码库中甚至还有一些帮助方法,你可以调用它们为你做以上操作,如果授予了权限,则返回true / false。