- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我需要用 Python 或 JACL 脚本编写脚本,我需要在其中监控远程服务器上运行的应用程序的管理控制台并从中提取信息。我需要提取以下信息:
如果有人能帮我写这个脚本,我将不胜感激。谢谢
最佳答案
创建一个名为 config.py 的文件并将以下内容粘贴到其中。
#
## Récupération du fichier de config à partir des paramètres du script
#
import sys
if (len(sys.argv) > 0):
configFile = sys.argv[0]
else:
configFile = 'F:\config.xml'
#
### Variables d'environnement du script
#
server = AdminControl.queryNames('node='+AdminControl.getNode( )+',type=Server,*')
serverName = AdminControl.getAttribute(server, "name")
nodeName = AdminControl.getNode( )
cellName = AdminControl.getCell( )
# scope à remplacer par cluster=clusterName lorsqu'applicable??
scope = ' -node '+nodeName+' -server '+serverName
scopeAlt = ' -scope Node='+nodeName+',Server='+serverName
scopeConfig = 'server(cells/'+cellName+'/nodes/'+nodeName+'/servers/'+serverName+'|server.xml)'
scopeResources = 'cells/'+cellName+'/nodes/'+nodeName+'/servers/'+serverName+'|resources.xml'
authPrefix = nodeName
#
### Fonctions utilitaires
#
def getAttributeD(xmlElement, name, default):
if xmlElement.hasAttribute(name):
return xmlElement.getAttribute(name)
return default
def getAttribute(xmlElement, name):
return xmlElement.getAttribute(name)
_regBuses = {}
def addBus(bus):
_regBuses[bus['name']] = bus
def getBus(busName):
return _regBuses[busName]
_regDataProviders = {}
def getDataProviderId(providerName):
if providerName in _regDataProviders.keys():
return _regDataProviders[providerName]
ps = AdminJDBC.listJDBCProviders(providerName)
if len(ps) > 0:
p = ps[0]
else:
print("JDBC Provider non trouve : " + providerName)
p = providerName
_regDataProviders[providerName] = p
return p
#
### Lecture du fichier de config
#
print('Lecture du fichier de config : ' + configFile)
import javax.xml.parsers.DocumentBuilderFactory as DocumentBuilderFactory
dbf = DocumentBuilderFactory.newInstance()
db = dbf.newDocumentBuilder()
document = db.parse(configFile)
config = document.getDocumentElement()
#
### JVM properties
#
jvm = AdminConfig.list('JavaVirtualMachine')
props = config.getElementsByTagName('property')
for i in range(props.getLength()):
xmle = props.item(i)
propName = getAttribute(xmle, 'name')
propValue = getAttribute(xmle, 'value')
propDesc = getAttributeD(xmle, 'description', '')
propRequired = getAttributeD(xmle, 'required', 'false')
print('Creation de la propriete JVM : ' + propName)
AdminConfig.create('Property', jvm, '[[validationExpression ""] [name "'+propName+'"] [description "'+propDesc+'"] [value "'+propValue+'"] [required "'+propRequired+'"]]')
#
### Authentication
#
auths = config.getElementsByTagName('authentication')
for i in range(auths.getLength()):
xmle = auths.item(i)
name = getAttribute(xmle, 'name')
user = getAttribute(xmle, 'user')
pwd = getAttribute(xmle, 'password')
desc = getAttributeD(xmle, 'description', '')
print('Creation de l\'authentification : ' + name)
AdminTask.createAuthDataEntry('[-alias '+name+' -user '+user+' -password "'+pwd+'" - description "'+desc+'" ]')
#
### JDBC Providers
#
providers = config.getElementsByTagName('jdbcProvider')
for i in range(providers.getLength()):
xmle = providers.item(i)
name = getAttribute(xmle, 'name')
shortName = getAttributeD(xmle, 'shortName', name)
dbType = getAttribute(xmle, 'databaseType')
providerType = getAttribute(xmle, 'providerType')
implementationType = getAttribute(xmle, 'implementationType')
classPath = getAttribute(xmle, 'classPath')
nativePath = getAttribute(xmle, 'nativePath')
desc = getAttributeD(xmle, 'description', '')
print('Creation du fournisseur JDBC : ' + name)
AdminTask.createJDBCProvider('['+scopeAlt+' -databaseType '+dbType+' -providerType "'+providerType+'" -implementationType "'+implementationType+'" -name "'+name+'" -description "'+desc+'" -classpath ['+classPath+'] -nativePath ['+nativePath+' ] ]')
#
### JDBC Datasources
#
dss = config.getElementsByTagName('jdbcDataSource')
for i in range(dss.getLength()):
xmle = dss.item(i)
name = getAttribute(xmle, 'name')
jndiName = getAttribute(xmle, 'jndiName')
providerName = getAttribute(xmle, 'jdbcProvider')
auth = getAttribute(xmle, 'authentication')
dbName = getAttribute(xmle, 'database')
dbHost = getAttribute(xmle, 'host')
dbPort = getAttribute(xmle, 'port')
dataStoreHelperClassName = getAttributeD(xmle, 'dataStoreHelperClassName', 'com.ibm.websphere.rsadapter.DB2UniversalDataStoreHelper')
print('Creation de la source de données : ' + name)
providerId = getDataProviderId(providerName)
authX = authPrefix + '/' + auth
AdminTask.createDatasource(providerId, '[-name '+name+' -jndiName '+jndiName+' - dataStoreHelperClassName '+dataStoreHelperClassName+' -containerManagedPersistence false -componentManagedAuthenticationAlias '+authX+' -xaRecoveryAuthAlias '+authX+' -configureResourceProperties [[databaseName java.lang.String '+dbName+'] [driverType java.lang.Integer 4] [serverName java.lang.String '+dbHost+'] [portNumber java.lang.Integer '+dbPort+']]]')
#
### Internal & External Buses (JMS)
#
buses = config.getElementsByTagName('internalBus')
for i in range(buses.getLength()):
xmle = buses.item(i)
busName = getAttribute(xmle, 'name')
busDesc = getAttributeD(xmle, 'description', '')
logSize = getAttributeD(xmle, 'logSize', '100')
minStoreSize = getAttributeD(xmle, 'minStoreSize', '200')
maxStoreSize = getAttributeD(xmle, 'minStoreSize', '500')
unlimitedStoreSize = getAttributeD(xmle, 'unlimitedStoreSize', 'false')
print('Creation du bus interne : ' + busName)
AdminTask.createSIBus('[-bus '+busName+' -description ['+busDesc+'] -busSecurity false]')
AdminTask.addSIBusMember('[-bus '+busName+' ' + scope + ' -fileStore -logSize '+logSize+' -minPermanentStoreSize '+minStoreSize+' -maxPermanentStoreSize '+maxStoreSize+' -unlimitedPermanentStoreSize '+unlimitedStoreSize+' -minTemporaryStoreSize '+minStoreSize+' -maxTemporaryStoreSize '+maxStoreSize+' -unlimitedTemporaryStoreSize '+unlimitedStoreSize+' ]')
bus = {}
bus['name'] = busName
bus['type'] = 'internal'
addBus(bus)
buses = config.getElementsByTagName('externalBus')
for i in range(buses.getLength()):
xmle = buses.item(i)
bus = {}
busName = getAttribute(xmle, 'name')
print('Creation du bus externe : ' + busName)
bus['name'] = busName
bus['type'] = 'external'
bus['manager'] = getAttribute(xmle, 'manager')
bus['host'] = getAttribute(xmle, 'host')
bus['port'] = getAttribute(xmle, 'port')
bus['channel'] = getAttribute(xmle, 'channel')
addBus(bus)
#
### JMS Connections Factories
#
wmqRes = '"WebSphere MQ JMS Provider('+scopeResources+'#builtin_mqprovider)"'
cfs = config.getElementsByTagName('jmsConnectionFactory')
for i in range(cfs.getLength()):
xmle = cfs.item(i)
busName = getAttribute(xmle, 'bus')
jmsType = getAttribute(xmle, 'jmsType')
cfName = getAttribute(xmle, 'name')
cfJndiName = getAttribute(xmle, 'jndiName')
cfDesc = getAttributeD(xmle, 'description', '')
nonPersistentMapping=getAttributeD(xmle, 'nonPersistentMapping', 'ExpressNonPersistent')
persistentMapping=getAttributeD(xmle, 'persistentMapping', 'ReliablePersistent')
wmqTransportType=getAttributeD(xmle, 'wmqTransportType', 'BINDINGS_THEN_CLIENT')
print('Creation de la fabrique de connection jms : ' + cfName)
bus = getBus(busName)
if bus['type'] == 'internal':
AdminTask.createSIBJMSConnectionFactory(scopeConfig, '[-type '+jmsType+' -name '+cfName+' -jndiName '+cfJndiName+' -description "'+cfDesc+'" -category -busName '+busName+' -nonPersistentMapping '+nonPersistentMapping+' -readAhead Default -tempQueueNamePrefix -target -targetType BusMember -targetSignificance Preferred -targetTransportChain -providerEndPoints -connectionProximity Bus -authDataAlias -containerAuthAlias -mappingAlias -shareDataSourceWithCMP false -logMissingTransactionContext false -manageCachedHandles false -xaRecoveryAuthAlias -persistentMapping '+persistentMapping+' -consumerDoesNotModifyPayloadAfterGet false -producerDoesNotModifyPayloadAfterSet false]')
else:
if jmsType == 'topic':
cfType = 'TCF'
else:
cfType = 'TCF'
AdminTask.createWMQConnectionFactory(wmqRes, '[-type '+cfType+' -name '+cfName+' -jndiName '+cfJndiName+' -description "'+cfDesc+'" -qmgrName ' +bus['manager']+ ' -wmqTransportType '+wmqTransportType+' -qmgrHostname '+bus['host']+' -qmgrPortNumber '+bus['port']+' -qmgrSvrconnChannel '+bus['channel']+' ]')
#
### Destinations JMS
#
dests = config.getElementsByTagName('jmsDestination')
for i in range(dests.getLength()):
xmle = dests.item(i)
busName = getAttribute(xmle, 'bus')
jmsType = getAttribute(xmle, 'jmsType')
destName = getAttribute(xmle, 'name')
destJndiName = getAttribute(xmle, 'jndiName')
destDest = getAttribute(xmle, 'destination')
destDesc = getAttributeD(xmle, 'description', '')
reliability = getAttributeD(xmle, 'reliability', 'EXPRESS_NONPERSISTENT')
deliveryMode = getAttributeD(xmle, 'deliveryMode', 'NonPersistent')
print('Creation de la destination jms : ' + destName)
bus = getBus(busName)
if bus['type'] == 'internal':
if jmsType == 'queue':
sibType = 'Queue'
elif jmsType == 'topic':
sibType = 'Topic'
AdminTask.createSIBDestination('[-bus '+busName+' -name '+destDest+' -type '+sibType+' -reliability '+reliability+' -description "'+destDesc+'" '+scope+' ]')
if jmsType == 'queue':
AdminTask.createSIBJMSQueue(scopeConfig, '[-name '+destName+' -jndiName '+destJndiName+' -description "'+destDesc+'" -deliveryMode '+deliveryMode+' -readAhead AsConnection -busName '+busName+' -queueName '+destDest+' -scopeToLocalQP false -producerBind false -producerPreferLocal true -gatherMessages false]')
elif jmsType == 'topic':
AdminTask.createSIBJMSTopic(scopeConfig, '[-name '+destName+' -jndiName '+destJndiName+' -description "'+destDesc+'" -topicName -deliveryMode '+deliveryMode+' -readAhead AsConnection -busName '+busName+' -topicSpace '+destDest+']')
else:
if jmsType == 'queue':
AdminTask.createWMQQueue(scopeConfig, '[-name '+destName+' -jndiName '+destJndiName+' -queueName '+destDest+' -qmgr -description "'+destDesc+'" ]')
elif jmsType == 'topic':
AdminTask.createWMQTopic(scopeConfig, '[-name '+destName+' -jndiName '+destJndiName+' -topicName '+destDest+' -description "'+destDesc+'" ]')
#
### JMS Activation Specs
#
wmqRes = '"WebSphere MQ JMS Provider('+scopeResources+'#builtin_mqprovider)"'
specs = config.getElementsByTagName('jmsActivationSpec')
for i in range(specs.getLength()):
xmle = specs.item(i)
busName = getAttribute(xmle, 'bus')
specName = getAttribute(xmle, 'name')
specJndiName = getAttribute(xmle, 'jndiName')
jmsType = getAttribute(xmle, 'jmsType')
destJndiName = getAttribute(xmle, 'jndiDestinationName')
specDesc = getAttributeD(xmle, 'description', '')
maxHandlers = getAttributeD(xmle, 'maxHandlers', '4')
wmqTransportType=getAttributeD(xmle, 'wmqTransportType', 'BINDINGS_THEN_CLIENT')
print('Creation de la spec d\'activation jms : ' + specName)
if jmsType == 'queue':
jmsDestClass = 'Queue'
elif jmsType == 'topic':
jmsDestClass = 'Topic'
bus = getBus(busName)
if bus['type'] == 'internal':
AdminTask.createSIBJMSActivationSpec(scopeConfig, '[-name '+specName+' - jndiName '+specJndiName+' -destinationJndiName '+destJndiName+' -description "'+specDesc+'" -busName '+busName+' -clientId -durableSubscriptionHome -destinationType javax.jms.'+jmsDestClass+' -messageSelector -acknowledgeMode Auto-acknowledge -subscriptionName -maxBatchSize 1 -maxConcurrency '+maxHandlers+' -subscriptionDurability NonDurable -shareDurableSubscriptions InCluster -authenticationAlias -readAhead Default -target -targetType BusMember -targetSignificance Preferred -targetTransportChain -providerEndPoints -shareDataSourceWithCMP false -consumerDoesNotModifyPayloadAfterGet false -forwarderDoesNotModifyPayloadAfterSet false -alwaysActivateAllMDBs false -retryInterval 30 -autoStopSequentialMessageFailure 0 -failingMessageDelay 0]')
else:
AdminTask.createWMQActivationSpec(wmqRes, '[-name '+specName+' -jndiName '+specJndiName+' -description "'+specDesc+'" -destinationJndiName '+destJndiName+' -destinationType javax.jms.'+jmsDestClass+' -qmgrName '+bus['manager']+' -wmqTransportType '+wmqTransportType+' -qmgrHostname '+bus['host']+' -qmgrPortNumber '+bus['port']+' -qmgrSvrconnChannel '+bus['channel']+' ]')
AdminConfig.save()
然后将此代码复制到名为 config.xml 的文件中
<?xml version="1.0" encoding="UTF-8"?>
<config>
<!-- Definition des propriétés JVM -->
<property
name="someproperty"
value="myvalue"
/>
<property
description="Different jvm properties"
name="myproperty"
value="true"
/>
<!-- Définition des sources d'authentification -->
<authentication
description="Authentification pour accès DB"
name="auth"
user="dbuser"
password="dbuser"
/>
<!-- Définition des fournisseurs JDBC -->
<jdbcProvider
description="One-phase commit DB2 JCC provider that supports JDBC 3.0."
shortName="DB2"
name="DB2 Universal JDBC Driver Provider"
databaseType="DB2"
providerType="DB2 Universal JDBC Driver Provider"
implementationType="Source de données du pool de connexions"
classPath="${DB2UNIVERSAL_JDBC_DRIVER_PATH}/db2jcc.jar ${UNIVERSAL_JDBC_DRIVER_PATH}/db2jcc_license_cu.jar ${DB2UNIVERSAL_JDBC_DRIVER_PATH}/db2jcc_license_cisuz.jar"
nativePath="${DB2UNIVERSAL_JDBC_DRIVER_NATIVEPATH}"
/>
<jdbcProvider
description="Two-phase commit DB2 JCC provider that supports JDBC 3.0."
shortName="DB2(XA)"
name="DB2 Universal JDBC Driver Provider (XA)"
databaseType="DB2"
providerType="DB2 Universal JDBC Driver Provider"
implementationType="Source de données XA"
classPath="${DB2UNIVERSAL_JDBC_DRIVER_PATH}/db2jcc.jar ${UNIVERSAL_JDBC_DRIVER_PATH}/db2jcc_license_cu.jar ${DB2UNIVERSAL_JDBC_DRIVER_PATH}/db2jcc_license_cisuz.jar"
nativePath="${DB2UNIVERSAL_JDBC_DRIVER_NATIVEPATH}"
/>
<!-- Définition des sources de données JDBC -->
<jdbcDataSource
description="Sources de données des Demandes"
name="db_name"
jndiName="jdbc/db_name"
jdbcProvider="DB2 Universal JDBC Driver Provider (XA)"
authentication="auth"
database="DB2XXXXX"
host="hostname"
port="00000"
/>
<!-- Définition des bus internes -->
<internalBus
description="Bus Interne"
name="BusInterne"
/>
<!-- Définition des bus externes -->
<externalBus
description="Serveur Websphere MQ externe"
name="ServeurMQ"
manager="Manager"
host="host"
port="1414"
channel="CLIENT.NAME"
/>
<!-- Définition des Fabriques de Connexions JMS-->
<jmsConnectionFactory
description="Queue de rafraichissement des demandes"
name="QCF"
jndiName="jms/QCF"
jmsType="queue"
bus='BusInterne'
/>
<jmsConnectionFactory
description="Topic "
name="TCF"
jndiName="jms/TCF"
jmsType="topic"
bus='ServeurMQ'
/>
<!-- Définition des Destinations JMS -->
<jmsDestination
description="Queue "
name="queue"
jndiName="jms/queue"
jmsType="queue"
bus='BusInterne'
destination="Q.NAME"
/>
<jmsDestination
description="Topic 2"
name="topic2"
jndiName="topic2"
jmsType="topic"
bus='ServeurMQ'
destination="Q.TOPIC.NAME"
/>
<!-- Définition des Spécifications d'Activation JMS -->
<jmsActivationSpec
description="Spec"
name="Specs"
jndiName="jms/Specs"
jmsType="queue"
bus='BusInterne'
jndiDestinationName="jms/queue"
maxHandlers="4"
/>
</config>
在config.xml文件中定义所有的资源后,只需调用如下从命令提示符。确保您有权访问 wsadmin。
wsadmin -lang jython -profileName MyProfile -f config.py config.xml
这会将您的所有资源创建到名为 MyProfile 的配置文件中。
希望对您有所帮助。
关于用于在 Websphere 中监控管理控制台属性的 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7822546/
大家好,我完成了这个基本的 C 程序,它向输入任何给定数字集的用户显示有序集、最小值、最大值、平均值和中值。我遇到的问题是,当我打印数字时,我必须使用诸如“3.2%f”之类的东西来设置标准的精度,我怎
我有这个基于 Python 的服务守护进程,它正在执行大量多路复用 IO(选择)。 从另一个脚本(也是 Python)我想查询这个服务守护进程的状态/信息和/或控制处理(例如暂停它、关闭它、更改一些参
我读到 Fortran 对表达式求值的顺序有严格的规则。对于某些数值算法来说,这一点非常重要。 数值 C 程序如何控制浮点运算的顺序并防止编译器“优化”到不需要的运算顺序,例如将 (a*b)*c 更改
上下文: 整个问题可以概括为我正在尝试复制调用system(或fork)的行为,但在 mpi 环境中。 (事实证明,你不能并行调用system。)这意味着我有一个程序在许多节点上运行,每个节点上有一个
我考虑过控制scanf来接受c中的任何输入。我的概念是等待10秒(或任何其他时间)来接受任何输入。10秒后它将退出并且不再接收任何输入。 int main(){ int a,b,c,d; sca
我正在尝试使用生成器停止 setTimeOut 上的执行流程。我究竟做错了什么?我无法让 console.log 每 1500 毫秒退出一次。我是 node 的新手,如果我在做一件非常愚蠢的事情,请不
我希望我的应用程序的 Activity 堆栈包含同一 Activity 的多个实例,每个实例处理不同的数据。因此,我将让 Activity A 在我的 Activity 堆栈中处理数据 a、b、c 和
我有这个 bash 文件,它向设备询问 OpenSSH 的 IP、密码等。 现在,如果我使用 ssh root@ip,我必须输入密码。这真的很烦人。第二;我不能让我的脚本向它发送命令。 这就是我想要的
我正在尝试测试我有权访问的机器的缓存属性。为此,我正在尝试读取内存并对其计时。我改变工作集大小和步幅访问模式以获得不同的测量值。 代码如下所示: clock1 = get_ticks() for (i
我正在尝试编写一个 makefile 来替换用于构建相当大的应用程序的脚本之一。 当前脚本一次编译一个文件,使用 make 的主要原因是并行化构建过程。使用 make -j 16 我目前在办公室服务器
我正在制作一个小的测试程序,它演示了一个粗糙的控制台界面。 该程序是一个低于标准的典型获取行、响应程序,它甚至不识别“退出”,并希望您通过按 control-c 强制退出。在 Mingw32 上完成。
好的,我有一个 VOIP 电话。我知道电话的 IP 地址和端口,并且可以完全访问电话,我正在使用它通过 SIP 中继调用 SIP 电话。 我基本上想随时查看手机上发生的事情,但我不知道从哪里开始。 如
是否可以指定 CWinApp::WriteProfileString() 使用的应用程序名称? 如果我使用 CWinApp::SetRegistryKey 将我的公司名称设置为“MyCompany”,
我正在尝试用 Python 控制 Tor。我在 stackoverflow 上阅读了其他几个关于这个主题的问题,但没有一个能回答这个问题。 我正在寻找一种方法,以便在命令运行时为您提供“新身份”、新
最近在做一个项目,涉及到iPhone设备和手表传输数据、控制彼此界面跳转,在网上找了很多资料,发现国内的网站这方面介绍的不多,而国外的网站写的也不是很全,所以在这写这篇文章,给大家参考一下,望大神指
我想增加图中值的范围。在示例中,值的范围从 50 到 200。但是,我需要按如下方式分配值:50 75 100 125 150 175 200 并且最好使用 scale_fill_gradientn
我有一个IconButton,当按下时波纹效果是圆形的并且比按钮的面积大,我怎样才能减少点击按钮时波纹效果的大小? IconButton( constraints
我正在使用代码契约(Contract)为我的项目生成附属程序集。基本上它为项目的 MyAssembly.dll 创建一个 MyAssembly.Contracts.dll。这应该放在你的程序集旁边,但
我想使用分面绘制图形,其中面板之间的边缘不同。面板按字母顺序自动排序(按照 ggplot 中的惯例)。一个简单的例子: library(igraph) library(ggraph) g <- mak
我想为我的 Android 应用程序创建一个小部件,以显示有关位置的一些实时详细信息,例如天气。但我想在任何时候允许最多 3 个小部件实例,每个实例都有不同的位置。我不确定该怎么做,也找不到任何信息。
我是一名优秀的程序员,十分优秀!