gpt4 book ai didi

linux - 如何优雅地将 runmqsc 命令的输出放入适当的 PHP 变量中?

转载 作者:太空宇宙 更新时间:2023-11-04 04:04:25 24 4
gpt4 key购买 nike

我正在使用系统调用在我在 php 中组合在一起的简单仪表板类型显示中显示有关服务器资源的信息。目前我正在使用 sed 来获取各个属性。所以获取当前深度的命令行是:

% echo 'DISPLAY QLOCAL('QUEUE.NAME') CURDEPTH' | runmqsc QMNAME5724-H72 (C) Copyright IBM Corp. 1994, 2009.  ALL RIGHTS RESERVED.Starting MQSC for queue manager QMNAME.     1 : DISPLAY QLOCAL(QUEUE.NAME) CURDEPTHAMQ8409: Display Queue details.   QUEUE(QUEUE.NAME)            TYPE(QLOCAL)   CURDEPTH(77)One MQSC command read.No commands have a syntax error.All valid MQSC commands were processed.

Command to get just the value (77) via sed:

% echo 'DISPLAY QLOCAL('QUEUE.NAME') CURDEPTH' | runmqsc QMNAME | grep "CURDEPTH" | sed 's/.*CURDEPTH//' | tr -d '()'

77

最后,为了分配给变量,我在适当设置 $qn 和 $qm 后使用以下命令:

$curdepth = trim(shell_exec('echo \'DISPLAY QLOCAL(\''.$qn.'\') CURDEPTH\' | runmqsc '.$qm.' | grep "CURDEPTH(" | sed \'s/.*CURDEPTH//\' | tr -d \'()\''));

现在,我可以通过运行标准 DISPLAy mqsc 命令来获取所有变量:

% echo 'DISPLAY QLOCAL('QUEUE.NAME')' | runmqsc QMNAME5724-H72 (C) Copyright IBM Corp. 1994, 2009.  ALL RIGHTS RESERVED.Starting MQSC for queue manager QMNAME.     1 : DISPLAY QLOCAL(QUEUE.NAME)AMQ8409: Display Queue details.   QUEUE(QUEUE.NAME)                       TYPE(QLOCAL)   ACCTQ(QMGR)                             ALTDATE(2010-10-13)   ALTTIME(15.48.06)                       BOQNAME( )   BOTHRESH(0)                             CLUSNL( )   CLUSTER(CLUSTERVV)                      CLWLPRTY(0)   CLWLRANK(0)                             CLWLUSEQ(QMGR)   CRDATE(2010-10-13)                      CRTIME(15.48.06)   CURDEPTH(77)                            DEFBIND(OPEN)   DEFPRTY(0)                              DEFPSIST(NO)   DEFPRESP(SYNC)                          DEFREADA(NO)   DEFSOPT(SHARED)                         DEFTYPE(PREDEFINED)   DESCR( )                                DISTL(NO)   GET(ENABLED)                            HARDENBO   INITQ( )                                IPPROCS(0)   MAXDEPTH(5000)                          MAXMSGL(4194304)   MONQ(QMGR)                              MSGDLVSQ(PRIORITY)   NOTRIGGER                               NPMCLASS(NORMAL)   OPPROCS(1)                              PROCESS( )   PUT(ENABLED)                            PROPCTL(COMPAT)   QDEPTHHI(80)                            QDEPTHLO(20)   QDPHIEV(DISABLED)                       QDPLOEV(DISABLED)   QDPMAXEV(ENABLED)                       QSVCIEV(NONE)   QSVCINT(999999999)                      RETINTVL(999999999)   SCOPE(QMGR)                             SHARE   STATQ(QMGR)                             TRIGDATA( )   TRIGDPTH(1)                             TRIGMPRI(0)   TRIGTYPE(FIRST)                         USAGE(NORMAL)One MQSC command read.No commands have a syntax error.All valid MQSC commands were processed.

我已经尝试了几天,寻找一些优雅的方法来将每个属性的值分配给一个适当命名的变量,只需一个系统调用(因为它们很昂贵),所以即。 $CURDEPTH=77 和 $RETINTVL=999999999 并且 PROCESS 为空。不用说,我一直惨遭失败,并且想知道是否有人对如何做到这一点有任何想法。

谢谢!

最佳答案

  1. 您正在重新发明轮子。 MQ 监控现在已经很好理解了,例如这个 Zabbix 模板应该适合您:https://github.com/welvet/mqm_zabbix还有其他的。

  2. 你尝试过数组吗?将所有内容转储到 ARRAY 中并从数组中取出内容(您需要的内容)

关于linux - 如何优雅地将 runmqsc 命令的输出放入适当的 PHP 变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21811151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com