|  | 
 
  
    | RSS Feed - WebSphere MQ Support | RSS Feed - Message Broker Support |  
 
  
	|    |  |  
  
	| MQ Script to create queue in multiple environment | « View previous topic :: View next topic » |  
  	| 
		
		
		  | Author | Message |  
		  | anil kumar | 
			  
				|  Posted: Wed Feb 19, 2020 11:14 pm    Post subject: MQ Script to create queue in multiple environment |   |  |  
		  |  Voyager
 
 
 Joined: 22 Jan 2017Posts: 99
 Location: India
 
 | 
			  
				| Dear all, 
 I'm looking for direction/pointers on scripts to create MQ objects (Q's preferably).
 
 let's say we have two environments staging, Live where I want to create a script so that when a call the script it should create a queue in both stagings queue manager and Live manager.
 
 I know that we can create queue's in any queue manager by running MQSC on that local cmd but what I want is to create a queue in a remote queue manager using MQSC script.
 
 please excuse me if this was already discussed in the forum and point out that discussion thread for reference.
 
 oops, I posted in the wrong forum I think, Moderator move this right forum, please.
 |  |  
		  | Back to top |  |  
		  |  |  
		  | hughson | 
			  
				|  Posted: Thu Feb 20, 2020 1:57 am    Post subject: |   |  |  
		  |  Padawan
 
 
 Joined: 09 May 2013Posts: 1967
 Location: Bay of Plenty, New Zealand
 
 | 
			  
				| I will just preface this reply by saying that this is a solution using a tool we sell here at MQGem. You might be interested to see what it does. 
 You can use MQSCX to do what you require. Here is a little example script. You pass in the command string to the function "dupe" and it connects to each queue manager in turn and then runs the command in the "cmd" variable.
 
 
 
   
	| Code: |  
	| func dupe(cmd) =conn qm(<@QMgr1>)
 @cmd
 =conn qm(<@QMgr2>)
 @cmd
 endfunc
 
 @QMgr1 = "QM1"
 @QMgr2 = "QM2"
 
 dupe("DEFINE QLOCAL(DUPED.Q)")
 |  
 Thanks for listening
 Cheers,
 Morag
 _________________
 Morag Hughson @MoragHughson
 IBM MQ Technical Education Specialist
 Get your IBM MQ training here!
 MQGem Software
 |  |  
		  | Back to top |  |  
		  |  |  
		  | tczielke | 
			  
				|  Posted: Thu Feb 20, 2020 7:36 am    Post subject: |   |  |  
		  | Guardian
 
 
 Joined: 08 Jul 2010Posts: 942
 Location: Illinois, USA
 
 | 
			  
				| I think it was at MQ v8, but runmqsc now supports a -c option to connect as a client to a remote queue manager. _________________
 Working with MQ since 2010.
 |  |  
		  | Back to top |  |  
		  |  |  
		  | bruce2359 | 
			  
				|  Posted: Thu Feb 20, 2020 9:06 am    Post subject: |   |  |  
		  |  Poobah
 
 
 Joined: 05 Jan 2008Posts: 9486
 Location: US: west coast, almost. Otherwise, enroute.
 
 | 
			  
				| 
   
	| tczielke wrote: |  
	| I think it was at MQ v8, but runmqsc now supports a -c option to connect as a client to a remote queue manager. |  ... and you could write a shell script, passing as arguments the name(s) of the destination qmgrs, and passing as a file the MQSC commands to define objects.
 _________________
 I like deadlines. I like to wave as they pass by.
 ב''ה
 Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live.
 |  |  
		  | Back to top |  |  
		  |  |  
		  | tczielke | 
			  
				|  Posted: Thu Feb 20, 2020 9:19 am    Post subject: |   |  |  
		  | Guardian
 
 
 Joined: 08 Jul 2010Posts: 942
 Location: Illinois, USA
 
 | 
			  
				| 
   
	| bruce2359 wrote: |  
	| 
   
	| tczielke wrote: |  
	| I think it was at MQ v8, but runmqsc now supports a -c option to connect as a client to a remote queue manager. |  ... and you could write a shell script, passing as arguments the name(s) of the destination qmgrs, and passing as a file the MQSC commands to define objects.
 |  
 Kind of like mqsc-qmgrs in the MH06 supportpac.
   
 
 
   
	| Code: |  
	| #!/bin/bash
 #
 # NOTES:
 # 1) mqsc-qmgrs requires an input of a queue manager group and a unique identifier text.
 #    A queue manager group contains a list of queue managers. The queue manager groups must also be defined near the top of the script.
 #    The unique identifier text allows multiple users to run mqsc-qmgrs in the same working directory. For this doc, we will assume TIMZ is used.
 #    Example: mqsc-qmgrs ALL TIMZ
 #
 # 2) mqsc-qmgrs must be executed in a directory that includes the file mqsc-qmgrs-TIMZ-input. This file will include the runmqsc commands to execute.
 #    Example: mqsc-qmgrs-TIMZ-input might include the following:
 #    DIS Q(*) ALL
 #    DIS QC(*) ALL
 #
 # 3) mqsc-qmgrs will produce many temporary output files that will start with mqsc-qmgrs-TIMZ-output* in the current working directory (CWD).
 #
 # 4) mqsc-qmgrs will produce a file in the CWD called mqsc-qmgrs-TIMZ-output-all, which includes all the runmqsc output from the queue manager group appended together.
 #
 # 5) mqsc-qmgrs will produce a file in the CWD called mqsc-qmgrs-TIMZ-output-all-1LS, which has the individual results put into one line.  This 1LS file is helpful for doing greps.
 #    Example:  If the following lines was returned in mqsc-qmgrs-TIMZ-output-all for queue manager QM1:
 #    AMQ8414: Display Channel details.
 #       CHANNEL(CL.2S.SERVER1)                  CHLTYPE(CLUSRCVR)
 #       ALTDATE(2016-03-11)                     ALTTIME(02.08.00)
 #       BATCHHB(1000)                           BATCHINT(0)
 #
 #    then the following one line would appear in the mqsc-qmgrs-TIMZ-output-all-1LS file:
 #    QM1. AMQ8414: Display Channel details.  CHANNEL(CL.2S.SERVER1)              CHLTYPE(CLUSRCVR)  ALTDATE(2016-03-11)                     ALTTIME(02.08.00)  BATCHHB(1000)
 #
 
 
 # Define qmgr groups here
 ALL="QM1 \
 QM2 \
 QM3 \
 QM4 \
 QM5 \
 QM6"
 
 TEST="QM1 \
 QM2 \
 QM3"
 
 PROD="QM4 \
 QM5 \
 QM6"
 
 # enforce a queue manager group is the first command line argument
 if [ -z "$1" ];then
 echo "Qmgr group argument 1 required!"
 exit 1
 fi
 
 eval QMGR_GROUPS=\$$1
 
 if [ A"$QMGR_GROUPS" = A ];then
 echo "$1 is not a defined group!"
 exit 1
 fi
 
 # enforce a unique identifier text for the second command line argument
 if [ -z "$2" ];then
 echo "Unique Identifier argument 2 required!"
 exit 1
 fi
 
 if [ ! -f mqsc-qmgrs-$2-input ]; then
 echo mqsc-qmgrs-$2-input must exist in current working directory!
 exit 1
 fi
 
 PID=$$
 rm mqsc-qmgrs-$2-output*
 
 echo runmqsc commands that will be run against queue manager group $1 are:
 cat mqsc-qmgrs-$2-input
 
 # execute in parallel runmqsc -c against qmgrs in our qmgr group
 echo Initiating runmqsc calls for queue managers in group $1
 for QMGR in $QMGR_GROUPS
 do
 runmqsc -c $QMGR < mqsc-qmgrs-$2-input > mqsc-qmgrs-$2-output$QMGR$PID.txt &
 WAIT_PIDS=$WAIT_PIDS" "$!
 done
 
 # wait for all the invocations of runmqsc -c to end
 echo Waiting for all runmqsc invocations to end
 wait $WAIT_PIDS
 
 # collect all the output from runmqsc -c into one file
 echo Collect all runmqsc output into mqsc-qmgrs-$2-output-all
 for QMGR in $QMGR_GROUPS
 do
 cat mqsc-qmgrs-$2-output$QMGR$PID.txt >> mqsc-qmgrs-$2-output-all
 rm mqsc-qmgrs-$2-output$QMGR$PID.txt
 done
 
 # create another 1LS file that has all the individual results in one line records.  This allows an easier way for users to grep results
 echo Create another file mqsc-qmgrs-$2-output-all-1LS that has all the individual results in one line records
 HoldTx="";QMGR="";
 while read LineTx;
 do
 # We have encountered a new result. Print out what we had parsed for
 # the previous result, a delimitter line, and then reset HoldTx
 if [ A"${LineTx:0:3}" = AAMQ -o A"${LineTx:0:3}" = ACSQ ];then
 echo "$QMGR $HoldTx";
 for ((i=0;i<150;i++));
 do
 printf =;
 done;
 echo;
 HoldTx="";
 fi;
 # We have encountered a new queue manager. Print out what we had parsed for
 # the previous result, a delimitter line, and reset HoldTx, and grab new queue manager
 if [ A"${LineTx:0:31}" = A"Starting MQSC for queue manager" ];then
 echo "$QMGR $HoldTx";
 for ((i=0;i<150;i++));
 do
 printf =;
 done;
 echo;
 HoldTx="";
 QMGR=${LineTx:32:48};
 fi;
 # store current line in our HoldTx variable
 HoldTx=$HoldTx${LineTx:0:${#LineTx}}"  ";
 done < mqsc-qmgrs-$2-output-all > mqsc-qmgrs-$2-output-all-1LS; echo "$QMGR $HoldTx" >> mqsc-qmgrs-$2-output-all-1LS
 
 echo Finished!
 
 |  _________________
 Working with MQ since 2010.
 |  |  
		  | Back to top |  |  
		  |  |  
		  | bruce2359 | 
			  
				|  Posted: Thu Feb 20, 2020 11:15 am    Post subject: |   |  |  
		  |  Poobah
 
 
 Joined: 05 Jan 2008Posts: 9486
 Location: US: west coast, almost. Otherwise, enroute.
 
 | 
			  
				| Yes, something like that.  _________________
 I like deadlines. I like to wave as they pass by.
 ב''ה
 Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live.
 |  |  
		  | Back to top |  |  
		  |  |  
		  | anil kumar | 
			  
				|  Posted: Mon Feb 24, 2020 2:29 am    Post subject: Thanks for the replies. |   |  |  
		  |  Voyager
 
 
 Joined: 22 Jan 2017Posts: 99
 Location: India
 
 | 
			  
				| Many thanks to everyone, for replying. 
 I will try to take this provided solution as a reference to my requirement.
 
 we were looking for a homegrown solution instead of tools so wanted to do it on our own.
 |  |  
		  | Back to top |  |  
		  |  |  
		  |  |  |  
  
	|    |  | Page 1 of 1 |  
 
 
  
  	| 
		
		  | 
 
 | You cannot post new topics in this forum You cannot reply to topics in this forum
 You cannot edit your posts in this forum
 You cannot delete your posts in this forum
 You cannot vote in polls in this forum
 
 |  |  |  |