| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- #!/bin/bash
- set -e
- yell() { printf "\033[1;6;37;41m$0: $*\033[0m\n" >&2; }
- die() { yell "$*"; exit 111; }
- try() { "$@" || die "FAIL: $*"; }
- cmd() {
- local info="${2:-$1}"
- echo "========================================================="
- echo -e "\n💡 $info"
- echo "========================================================="
- eval "$1"
- }
- config=$(cat /opt/mdw/bars/queuemanager.log | tr ' ' '\n' | grep -v 'TYPE\;QM\;PORT\;QNAME\;USAGE\;RNAME\;RQMNAME\;XMITQ\;CHANNEL\;CHLTYPE')
- target=$VAR2
- serv_path=$VAR3
- BROKER=$VAR4
- AWAKE=$VAR5
- echo $config
- while read -r line; do
- trimmed_line=$(echo "$line" | xargs)
- echo $line
- if [[ "$line" == "TYPE;QM;PORT;QNAME;USAGE;RNAME;RQMNAME;XMITQ;CHANNEL"* || "$trimmed_line" == "" ]]; then
- echo "No need to execute because is line 1 or blank"
- else
- type=$(echo "$line" | cut -d';' -f 1)
- qm=$(echo "$line" | cut -d';' -f 2)
- port=$(echo "$line" | cut -d';' -f 3)
- qname=$(echo "$line" | cut -d';' -f 4)
- usage=$(echo "$line" | cut -d';' -f 5)
- rname=$(echo "$line" | cut -d';' -f 6)
- rqname=$(echo "$line" | cut -d';' -f 7)
- xmitq=$(echo "$line" | cut -d';' -f 8)
- channel=$(echo "$line" | cut -d';' -f 9)
- chltype=$(echo "$line" | cut -d';' -f 10)
- if [[ $(dspmq | grep "$qm" | grep "Ended") ]]; then
- try cmd "strmqm $qm" "Start QM $qm"
- fi;
- echo "checking queue $serv_path/$(echo "$qm" | tr -d '.')"
- if [[ "$type" == "QM" ]]; then
- # cek jika belum ada directory
- qm_path=$serv_path/$(echo "$qm" | tr -d '.')
- if [[ ! -d "$qm_path" ]]; then
- echo -e "\n\033[1;34m💡 Create Directory $qm_path\033[0m"
- try cmd "mkdir -m 775 -p $qm_path/data" "Create Directory $qm_path/data"
- try cmd "mkdir -m 775 -p $qm_path/log" "Create Directory $qm_path/log"
- fi
- # cek queue manager sudah ada atau belum
- if [[ ! $(dspmq | grep "$qm") ]]; then
- try cmd "crtmqm -md $qm_path/data -ld $qm_path/log $qm 2>/dev/null" "Create QM $qm"
- if [[ "$target" == "DC" && ! $(ps -ef | grep "amqzxma0 -m $qm" | grep -v grep) ]]; then
- try cmd "strmqm $qm 2>/dev/null" "Start QM $qm"
- fi
- if [[ "$target" == "DRC" && $(dspmq | grep -E "$qm|Ended") ]]; then
- try cmd "strmqm $qm 2>/dev/null" "Start QM $qm"
- fi;
- echo "DEFINE LISTENER($qm) TRPTYPE(TCP) port ($port) CONTROL(STARTONLY) REPLACE" | runmqsc $qm
- echo "DEFINE CHANNEL(SYSTEM.ADMIN.SVRCONN) CHLTYPE(SVRCONN)" | runmqsc $qm
- echo "START CHANNEL(SYSTEM.ADMIN.SVRCONN)" | runmqsc $qm
- echo "ALTER QMGR CHLAUTH(DISABLED)" | runmqsc $qm
- echo "START LISTENER($qm)" | runmqsc $qm
- fi;
- fi;
- if [[ "$type" == "QLOCAL" ]]; then
- if echo "DISPLAY QLOCAL($qname)" | runmqsc $qm 2>&1 | grep -q "QUEUE($qname)"; then
- echo "Queue Local $qname exists in Queue Manager $qm."
- else
- echo "Queue Local $qname does not exist in Queue Manager $qm."
- if [[ -z "$usage" ]]; then
- try cmd "echo \"DEFINE QLOCAL($qname) REPLACE\" | runmqsc $qm | grep 'AMQ'" \
- "Create QLOCAL $qname"
- else
- try cmd "echo \"DEFINE QLOCAL($qname) USAGE ($usage) REPLACE\" | runmqsc $qm | grep 'AMQ'" \
- "Create XMITQ $qname"
- fi
- fi
- fi
- if [[ "$type" == "CHANNEL" ]]; then
- if echo "DISPLAY QCHANNEL($qname)" | runmqsc $qm 2>&1 | grep -q "QUEUE($qname)"; then
- echo "Queue Channel $qname exists in Queue Manager $qm."
- else
- echo "Queue Channel $qname does not exist in Queue Manager $qm."
- if [[ "$chltype" == "SDR" ]]; then
- echo "DEFINE CHANNEL($channel) CHLTYPE($chltype) CONNAME('localhost($port)') XMITQ($xmitq) TRPTYPE(TCP) REPLACE" | runmqsc $qm
- echo "ALTER CHANNEL($channel) CHLTYPE($chltype) HBINT(0)" | runmqsc $qm
- echo "ALTER CHANNEL($channel) CHLTYPE($chltype) DISCINT(0)" | runmqsc $qm
- echo "START CHANNEL($channel)" | runmqsc $qm
- else
- echo "DEFINE CHANNEL($channel) CHLTYPE ($chltype) TRPTYPE (TCP) REPLACE" | runmqsc $qm
- echo "ALTER CHANNEL($channel) CHLTYPE ($chltype) HBINT (0)" | runmqsc $qm
- fi;
- fi
- fi;
- if [[ "$type" == "QREMOTE" ]]; then
- if echo "DISPLAY QREMOTE($qname)" | runmqsc $qm 2>&1 | grep -q "QUEUE($qname)"; then
- echo "Queue Remote $qname exists in Queue Manager $qm."
- else
- echo "Queue Remote $qname does not exist in Queue Manager $qm."
- echo "DEFINE QREMOTE($qname) RNAME($rname) RQMNAME($rqname) XMITQ($xmitq)" | runmqsc $qm
- fi
- fi;
- fi
- done <<< "$config"
- if [[ $target == "DRC" && $AWAKE == false ]]; then
- try cmd "endmqm -i $qm" \
- "Stop QM $qm"
- sleep $((2 * 60))
- fi
|