将参数动态传递给 wsadmin.sh 中使用的 jython
passing argument to jython used in wsadmin.sh dynamically
我需要 wsadmin.sh 脚本和 jython 方面的帮助。
我正在创建一个脚本,通过 wsadmin.sh 为用户提供控制台访问权限
如果我在 consoleacces.py 文件中硬编码用户名详细信息,我可以使它工作,但我的要求是在 运行 时提供用户名详细信息,以便我可以多次使用该脚本针对不同的用户。
工作:
wsadmin.sh -lang jython -f /tmp/consoleaccess.py
consoleaccess.py
的内容
AdminTask.mapUsersToAdminRole('[-accessids [user:defaultWIMFileBasedRealm/employeenumber=123,ou=people,ou=country,o=office] -roleName administrator -userids user1]')
AdminConfig.save()
agBean=AdminControl.queryNames('type=AuthorizationGroupManager,process=dmgr,*');null=AdminControl.invoke(agBean, 'refreshAll')
不工作
wsadmin.sh -lang jython -f /tmp/consoleaccess.py 123 user1 administrator
consoleaccess.py
的内容
import sys
AdminTask.mapUsersToAdminRole('[-accessids [user:defaultWIMFileBasedRealm/employeenumber=sys.argv[1],ou=people,ou=americas,o=SIAM_ED] -roleName sys.argv[3] -userids sys.argv[2]]')
AdminConfig.save()
agBean=AdminControl.queryNames('type=AuthorizationGroupManager,process=dmgr,*');null=AdminControl.invoke(agBean, 'refreshAll')
错误:
WASX7209I: Connected to process "dmgr" on node host1 using SOAP connector; The type of process is: DeploymentManager
WASX7303I: The following options are passed to the scripting environment and are available as arguments that are stored in the argv variable: "[123, user1, administrator]"
WASX7017E: Exception received while running file "/tmp/consoleaccess.py"; exception information: com.ibm.ws.scripting.ScriptingException: WASX8009E: Invalid parameter: [-accessids [user:defaultWIMFileBasedRealm/employeenumber=sys.argv[1],ou=people,ou=americas,o=SIAM_ED] -roleName sys.argv[3] -userids sys.argv[2]]
如何 --
将标志与参数分开?
wsadmin.sh -lang jython -f /tmp/consoleaccess.py -- 123 user1 administrator
并将 sys.argv 移出字符串:
'...employeenumber=' + sys.argv[1] + ',ou=people,ou=americas,o=SIAM_ED] -roleName ' + sys.argv[3] + ' -userids ' + sys.argv[2]])
更新脚本如下。
注意:在 wsadmin Jython 中,程序或脚本的名称不是 sys.argv 的一部分。所以你的第一个参数是 sys.argv[0] 而不是 sys.argv[1]
import sys
userEmpNo=sys.argv[0]
userName=sys.argv[1]
userRole=sys.argv[2]
AdminTask.mapUsersToAdminRole('[-accessids [user:defaultWIMFileBasedRealm/employeenumber=' +userEmpNo+ ',ou=people,ou=americas,o=SIAM_ED] -roleName ' +userRole+ ' -userids ' +userName+ ']')
AdminConfig.save()
agBean=AdminControl.queryNames('type=AuthorizationGroupManager,process=dmgr,*');null=AdminControl.invoke(agBean, 'refreshAll')
和 运行 脚本为
wsadmin.sh -lang jython -f /tmp/consoleaccess.py 123 user1 administrator
我需要 wsadmin.sh 脚本和 jython 方面的帮助。 我正在创建一个脚本,通过 wsadmin.sh 为用户提供控制台访问权限 如果我在 consoleacces.py 文件中硬编码用户名详细信息,我可以使它工作,但我的要求是在 运行 时提供用户名详细信息,以便我可以多次使用该脚本针对不同的用户。
工作:
wsadmin.sh -lang jython -f /tmp/consoleaccess.py
consoleaccess.py
的内容AdminTask.mapUsersToAdminRole('[-accessids [user:defaultWIMFileBasedRealm/employeenumber=123,ou=people,ou=country,o=office] -roleName administrator -userids user1]')
AdminConfig.save()
agBean=AdminControl.queryNames('type=AuthorizationGroupManager,process=dmgr,*');null=AdminControl.invoke(agBean, 'refreshAll')
不工作
wsadmin.sh -lang jython -f /tmp/consoleaccess.py 123 user1 administrator
consoleaccess.py
的内容 import sys
AdminTask.mapUsersToAdminRole('[-accessids [user:defaultWIMFileBasedRealm/employeenumber=sys.argv[1],ou=people,ou=americas,o=SIAM_ED] -roleName sys.argv[3] -userids sys.argv[2]]')
AdminConfig.save()
agBean=AdminControl.queryNames('type=AuthorizationGroupManager,process=dmgr,*');null=AdminControl.invoke(agBean, 'refreshAll')
错误:
WASX7209I: Connected to process "dmgr" on node host1 using SOAP connector; The type of process is: DeploymentManager
WASX7303I: The following options are passed to the scripting environment and are available as arguments that are stored in the argv variable: "[123, user1, administrator]"
WASX7017E: Exception received while running file "/tmp/consoleaccess.py"; exception information: com.ibm.ws.scripting.ScriptingException: WASX8009E: Invalid parameter: [-accessids [user:defaultWIMFileBasedRealm/employeenumber=sys.argv[1],ou=people,ou=americas,o=SIAM_ED] -roleName sys.argv[3] -userids sys.argv[2]]
如何 --
将标志与参数分开?
wsadmin.sh -lang jython -f /tmp/consoleaccess.py -- 123 user1 administrator
并将 sys.argv 移出字符串:
'...employeenumber=' + sys.argv[1] + ',ou=people,ou=americas,o=SIAM_ED] -roleName ' + sys.argv[3] + ' -userids ' + sys.argv[2]])
更新脚本如下。
注意:在 wsadmin Jython 中,程序或脚本的名称不是 sys.argv 的一部分。所以你的第一个参数是 sys.argv[0] 而不是 sys.argv[1]
import sys
userEmpNo=sys.argv[0]
userName=sys.argv[1]
userRole=sys.argv[2]
AdminTask.mapUsersToAdminRole('[-accessids [user:defaultWIMFileBasedRealm/employeenumber=' +userEmpNo+ ',ou=people,ou=americas,o=SIAM_ED] -roleName ' +userRole+ ' -userids ' +userName+ ']')
AdminConfig.save()
agBean=AdminControl.queryNames('type=AuthorizationGroupManager,process=dmgr,*');null=AdminControl.invoke(agBean, 'refreshAll')
和 运行 脚本为
wsadmin.sh -lang jython -f /tmp/consoleaccess.py 123 user1 administrator